diff --git a/src/gfx/reverse.cpp b/src/gfx/reverse.cpp index f0e3e7d6..9d6a6c35 100644 --- a/src/gfx/reverse.cpp +++ b/src/gfx/reverse.cpp @@ -217,16 +217,17 @@ void reverse() { palettes.clear(); std::array buf; // max 4 colors - assume(buf.size() >= sizeof(uint16_t) * options.nbColorsPerPal); + size_t const palSize = sizeof(uint16_t) * options.nbColorsPerPal; + assume(buf.size() >= palSize); for (;;) { - if (size_t nbRead = file->sgetn(reinterpret_cast(buf.data()), buf.size()); + if (size_t nbRead = file->sgetn(reinterpret_cast(buf.data()), palSize); nbRead == 0) { break; - } else if (nbRead != sizeof(uint16_t) * options.nbColorsPerPal) { + } else if (nbRead != palSize) { fatal( - "Palette data size (%zu) is not a multiple of %zu bytes\n", - palettes.size() * buf.size() + nbRead, - buf.size() + "Palette data size (%zu) is not a multiple of %zu bytes", + palettes.size() * palSize + nbRead, + palSize ); } // Expand the colors diff --git a/test/gfx/reverse_multi_palette.2bpp b/test/gfx/reverse_multi_palette.2bpp new file mode 100644 index 00000000..c4b4f6c4 Binary files /dev/null and b/test/gfx/reverse_multi_palette.2bpp differ diff --git a/test/gfx/reverse_multi_palette.attrmap b/test/gfx/reverse_multi_palette.attrmap new file mode 100644 index 00000000..180cf4bf Binary files /dev/null and b/test/gfx/reverse_multi_palette.attrmap differ diff --git a/test/gfx/reverse_multi_palette.flags b/test/gfx/reverse_multi_palette.flags new file mode 100644 index 00000000..fb08b10f --- /dev/null +++ b/test/gfx/reverse_multi_palette.flags @@ -0,0 +1,5 @@ +-s 2 +-u +-t reverse_multi_palette.tilemap +-a reverse_multi_palette.attrmap +-p reverse_multi_palette.pal diff --git a/test/gfx/reverse_multi_palette.pal b/test/gfx/reverse_multi_palette.pal new file mode 100644 index 00000000..ce75044d Binary files /dev/null and b/test/gfx/reverse_multi_palette.pal differ diff --git a/test/gfx/reverse_multi_palette.tilemap b/test/gfx/reverse_multi_palette.tilemap new file mode 100644 index 00000000..fa37ca9b Binary files /dev/null and b/test/gfx/reverse_multi_palette.tilemap differ