Browse Source

UI: Don't allow resolutions too large

Fixes a crash when entering large resolutions, and also works as a minor
sanity check against bad resolution values.
Clayton Groeneveld 6 years ago
parent
commit
765bb34641
1 changed files with 10 additions and 0 deletions
  1. 10 0
      UI/window-basic-settings.cpp

+ 10 - 0
UI/window-basic-settings.cpp

@@ -95,6 +95,11 @@ struct CodecDesc {
 Q_DECLARE_METATYPE(FormatDesc)
 Q_DECLARE_METATYPE(CodecDesc)
 
+static inline bool ResTooHigh(uint32_t cx, uint32_t cy)
+{
+	return cx > 16384 || cy > 16384;
+}
+
 /* parses "[width]x[height]", string, i.e. 1024x768 */
 static bool ConvertResText(const char *res, uint32_t &cx, uint32_t &cy)
 {
@@ -129,6 +134,11 @@ static bool ConvertResText(const char *res, uint32_t &cx, uint32_t &cy)
 	if (lexer_getbasetoken(lex, &token, IGNORE_WHITESPACE))
 		return false;
 
+	if (ResTooHigh(cx, cy)) {
+		cx = cy = 0;
+		return false;
+	}
+
 	return true;
 }