Skip to content

Commit dfd8fb0

Browse files
author
Fayvel Victor
committed
Validate size config values to avoid crashes
1 parent b1f9ca3 commit dfd8fb0

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

src/m64py/frontend/mainwindow.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ def resizeEvent(self, event):
110110

111111
def showEvent(self, event):
112112
if not self.widgets_height:
113-
width, height = self.settings.qset.value("size", SIZE_1X)
113+
width, height = self.settings.get_size_safe()
114114
menubar_height = self.menubar.size().height()
115115
statusbar_height = self.statusbar.size().height()
116116
self.widgets_height = menubar_height + statusbar_height

src/m64py/frontend/settings.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ def browse_dialog(self, args):
139139
self.core = self.parent.worker.core
140140
self.set_core()
141141
self.set_video()
142-
size = self.qset.value("size", SIZE_1X)
142+
size = self.get_size_safe()
143143
self.parent.window_size_triggered(size)
144144
self.parent.state_changed.emit((True, False, False, False))
145145
elif widget == self.pathPlugins:
@@ -201,6 +201,18 @@ def get_int_safe(self, key, default):
201201
except ValueError:
202202
return default
203203

204+
def get_size_safe(self):
205+
size = self.qset.value("size", SIZE_1X)
206+
if not type(size) == tuple:
207+
size = SIZE_1X
208+
if len(size) != 2:
209+
size = SIZE_1X
210+
if type(size[0]) != int or type(size[1]) != int:
211+
size = SIZE_1X
212+
if size[0] <= 0 or size[1] <= 0:
213+
size = SIZE_1X
214+
return size
215+
204216
def set_video(self):
205217
self.comboResolution.clear()
206218
for mode in MODES:

0 commit comments

Comments
 (0)