diff --git a/src/gfx/process.cpp b/src/gfx/process.cpp index 711e665c..245f8c8b 100644 --- a/src/gfx/process.cpp +++ b/src/gfx/process.cpp @@ -880,31 +880,33 @@ static void outputUnoptimizedTileData( for (auto [tile, attr] : zip(png.visitAsTiles(), attrmap)) { // Do not emit fully-background tiles. - if (!attr.isBackgroundTile()) { - // If the tile is fully transparent, this defaults to palette 0. - Palette const &palette = palettes[attr.getPalID(mappings)]; + if (attr.isBackgroundTile()) { + ++tileIdx; + continue; + } - bool empty = true; - for (uint32_t y = 0; y < 8; ++y) { - uint16_t bitplanes = TileData::rowBitplanes(tile, palette, y); - if (bitplanes != 0) { - empty = false; - } - if (tileIdx < nbKeptTiles) { - output->sputc(bitplanes & 0xFF); - if (options.bitDepth == 2) { - output->sputc(bitplanes >> 8); - } + // If the tile is fully transparent, this defaults to palette 0. + Palette const &palette = palettes[attr.getPalID(mappings)]; + + bool empty = true; + for (uint32_t y = 0; y < 8; ++y) { + uint16_t bitplanes = TileData::rowBitplanes(tile, palette, y); + if (bitplanes != 0) { + empty = false; + } + if (tileIdx < nbKeptTiles) { + output->sputc(bitplanes & 0xFF); + if (options.bitDepth == 2) { + output->sputc(bitplanes >> 8); } } + } - if (!empty && tileIdx >= nbKeptTiles) { - warning( - WARNING_TRIM_NONEMPTY, - "Trimming a nonempty tile (configure with '-x/--trim-end'" - ); - break; // Don't repeat the warning for subsequent tiles - } + if (!empty && tileIdx >= nbKeptTiles) { + warning( + WARNING_TRIM_NONEMPTY, "Trimming a nonempty tile (configure with '-x/--trim-end')" + ); + break; // Don't repeat the warning for subsequent tiles } ++tileIdx; } diff --git a/src/link/output.cpp b/src/link/output.cpp index f051fdec..484b2a02 100644 --- a/src/link/output.cpp +++ b/src/link/output.cpp @@ -263,34 +263,31 @@ static void writeROM() { static void writeSymName(std::string const &name, FILE *file) { for (char const *ptr = name.c_str(); *ptr != '\0';) { - char c = *ptr; - - if (continuesIdentifier(c)) { - // Output legal ASCII characters as-is + // Output legal ASCII characters as-is + if (char c = *ptr; continuesIdentifier(c)) { putc(c, file); ++ptr; - } else { - // Output illegal characters using Unicode escapes ('\u' or '\U') - // Decode the UTF-8 codepoint; or at least attempt to - uint32_t state = UTF8_ACCEPT, codepoint; - - do { - decode(&state, &codepoint, *ptr); - if (state == UTF8_REJECT) { - // This sequence was invalid; emit a U+FFFD, and recover - codepoint = 0xFFFD; - // Skip continuation bytes - // A NUL byte does not qualify, so we're good - while ((*ptr & 0xC0) == 0x80) { - ++ptr; - } - break; - } - ++ptr; - } while (state != UTF8_ACCEPT); - - fprintf(file, codepoint <= 0xFFFF ? "\\u%04" PRIx32 : "\\U%08" PRIx32, codepoint); + continue; } + + // Output illegal characters using Unicode escapes ('\u' or '\U') + // Decode the UTF-8 codepoint; or at least attempt to + uint32_t state = UTF8_ACCEPT, codepoint; + do { + decode(&state, &codepoint, *ptr); + if (state == UTF8_REJECT) { + // This sequence was invalid; emit a U+FFFD, and recover + codepoint = 0xFFFD; + // Skip continuation bytes + // A NUL byte does not qualify, so we're good + while ((*ptr & 0xC0) == 0x80) { + ++ptr; + } + break; + } + ++ptr; + } while (state != UTF8_ACCEPT); + fprintf(file, codepoint <= 0xFFFF ? "\\u%04" PRIx32 : "\\U%08" PRIx32, codepoint); } } diff --git a/test/gfx/warn_trim_nonempty.err b/test/gfx/warn_trim_nonempty.err index 0239e12a..e40ab0c5 100644 --- a/test/gfx/warn_trim_nonempty.err +++ b/test/gfx/warn_trim_nonempty.err @@ -1,2 +1,2 @@ warning: [-Wtrim-nonempty] - Trimming a nonempty tile (configure with '-x/--trim-end' + Trimming a nonempty tile (configure with '-x/--trim-end')