diff --git a/src/gfx/main.cpp b/src/gfx/main.cpp index 7e5751b5..dac70e03 100644 --- a/src/gfx/main.cpp +++ b/src/gfx/main.cpp @@ -671,24 +671,27 @@ int main(int argc, char *argv[]) { autoOutPath(localOptions.autoPalettes, options.palettes, ".pal"); autoOutPath(localOptions.autoPalmap, options.palmap, ".palmap"); - // Execute deferred pal spec parsing, now that all other params are known - switch (options.palSpecType) { - case Options::NO_SPEC: - case Options::EMBEDDED: - assume(!localOptions.palSpec); - break; - case Options::INLINE: - assume(localOptions.palSpec); - parseInlinePalSpec(localOptions.palSpec->c_str()); - break; - case Options::EXTERNAL: - assume(localOptions.palSpec); - parseExternalPalSpec(localOptions.palSpec->c_str()); - break; - case Options::DMG: - assume(localOptions.palSpec); - parseDmgPalSpec(localOptions.palSpec->c_str()); - break; + // Execute deferred pal spec parsing, now that all other params are known. + // Do not parse pal specs if `options.nbColorsPerPal` is invalid. + if (options.nbColorsPerPal > 0 && options.nbColorsPerPal <= 4) { + switch (options.palSpecType) { + case Options::NO_SPEC: + case Options::EMBEDDED: + assume(!localOptions.palSpec); + break; + case Options::INLINE: + assume(localOptions.palSpec); + parseInlinePalSpec(localOptions.palSpec->c_str()); + break; + case Options::EXTERNAL: + assume(localOptions.palSpec); + parseExternalPalSpec(localOptions.palSpec->c_str()); + break; + case Options::DMG: + assume(localOptions.palSpec); + parseDmgPalSpec(localOptions.palSpec->c_str()); + break; + } } verboseDo(VERB_CONFIG, verboseOutputConfig); diff --git a/test/gfx/bad_pal_and_colors.err b/test/gfx/bad_pal_and_colors.err new file mode 100644 index 00000000..85eff41a --- /dev/null +++ b/test/gfx/bad_pal_and_colors.err @@ -0,0 +1,3 @@ +error: Palette size ('-s') must not exceed 4 +error: 2bpp palettes can only contain 4 colors, not 5 +Conversion aborted after 2 errors diff --git a/test/gfx/bad_pal_and_colors.flags b/test/gfx/bad_pal_and_colors.flags new file mode 100644 index 00000000..7f08773e --- /dev/null +++ b/test/gfx/bad_pal_and_colors.flags @@ -0,0 +1 @@ +-s 5 -c #111,#222,#333,#444,#555 diff --git a/test/gfx/bad_pal_and_colors.png b/test/gfx/bad_pal_and_colors.png new file mode 100644 index 00000000..fe5443b8 Binary files /dev/null and b/test/gfx/bad_pal_and_colors.png differ