Skip to content

Commit 4e1bc6b

Browse files
author
Fayvel Victor
committed
Avoid loading invalid numeric config entries
Don't try to load old style "true"/"false" config entries as integer. This would cause an value error and crash m64py. Instead try to load the content only when it is valid and otherwise use the m64py default value.
1 parent d665235 commit 4e1bc6b

File tree

3 files changed

+17
-14
lines changed

3 files changed

+17
-14
lines changed

src/m64py/frontend/mainwindow.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,7 @@ def __init__(self, optparse):
7878
self.settings = Settings(self)
7979
self.worker = Worker(self)
8080

81-
self.vidext = bool(
82-
int(self.settings.qset.value("enable_vidext", 1)))
81+
self.vidext = bool(self.settings.get_int_safe("enable_vidext", 1))
8382

8483
self.create_state_slots()
8584
self.create_widgets()
@@ -126,7 +125,7 @@ def window_size_triggered(self, size):
126125
# event.ignore() doesn't work on windows
127126
if not sys.platform == "win32":
128127
if not fullscreen and \
129-
bool(int(self.settings.qset.value("keep_aspect", 1))):
128+
bool(self.settings.get_int_safe("keep_aspect", 1)):
130129
width, height = self.keep_aspect(size)
131130

132131
self.worker.core.config.open_section("Video-General")

src/m64py/frontend/settings.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,12 @@ def set_paths(self):
195195
self.pathPlugins.setText(path_plugins)
196196
self.pathData.setText(path_data)
197197

198+
def get_int_safe(self, key, default):
199+
try:
200+
return int(self.qset.value(key, default))
201+
except ValueError:
202+
return default
203+
198204
def set_video(self):
199205
self.comboResolution.clear()
200206
for mode in MODES:
@@ -212,7 +218,7 @@ def set_video(self):
212218
self.comboResolution.setCurrentIndex(index)
213219

214220
self.checkEnableVidExt.setChecked(
215-
bool(int(self.qset.value("enable_vidext", 1))))
221+
bool(self.get_int_safe("enable_vidext", 1)))
216222

217223
self.checkFullscreen.setChecked(
218224
bool(self.core.config.get_parameter("Fullscreen")))
@@ -222,10 +228,10 @@ def set_video(self):
222228
self.checkKeepAspect.setChecked(False)
223229
self.checkKeepAspect.setEnabled(False)
224230
else:
225-
keep_aspect = bool(int(self.qset.value("keep_aspect", 1)))
231+
keep_aspect = bool(self.get_int_safe("keep_aspect", 1))
226232
self.checkKeepAspect.setChecked(keep_aspect)
227233

228-
disable_screensaver = bool(int(self.qset.value("disable_screensaver", 1)))
234+
disable_screensaver = bool(self.get_int_safe("disable_screensaver", 1))
229235
self.checkDisableScreenSaver.setChecked(disable_screensaver)
230236

231237
def set_core(self):

src/m64py/frontend/worker.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -179,17 +179,17 @@ def rom_open(self):
179179
del romfile
180180
self.core.rom_get_header()
181181
self.core.rom_get_settings()
182-
if bool(int(self.settings.qset.value(
183-
"disable_screensaver", 1))):
182+
if bool(self.settings.get_int_safe(
183+
"disable_screensaver", 1)):
184184
screensaver.disable()
185185
self.parent.rom_opened.emit()
186186
self.parent.recent_files.add(self.filepath)
187187

188188
def rom_close(self):
189189
"""Closes ROM."""
190190
self.core.rom_close()
191-
if bool(int(self.settings.qset.value(
192-
"disable_screensaver", 1))):
191+
if bool(self.settings.get_int_safe(
192+
"disable_screensaver", 1)):
193193
screensaver.enable()
194194
self.parent.rom_closed.emit()
195195

@@ -306,13 +306,11 @@ def toggle_pause(self):
306306
"""Toggles pause."""
307307
if self.state == M64EMU_RUNNING:
308308
self.core.pause()
309-
if bool(int(self.settings.qset.value(
310-
"disable_screensaver", 1))):
309+
if bool(self.settings.get_int_safe("disable_screensaver", 1)):
311310
screensaver.enable()
312311
elif self.state == M64EMU_PAUSED:
313312
self.core.resume()
314-
if bool(int(self.settings.qset.value(
315-
"disable_screensaver", 1))):
313+
if bool(self.settings.get_int_safe("disable_screensaver", 1)):
316314
screensaver.disable()
317315
self.toggle_actions()
318316

0 commit comments

Comments
 (0)