From 80ec073916fefa21896e59006a50bc247813c976 Mon Sep 17 00:00:00 2001 From: Philippe Houdoin Date: Tue, 5 Oct 2010 10:14:38 +0000 Subject: [PATCH] When a literal sequence was following a 127 long run sequence, as found in splash_logo-development.png at 75x65, the first literal value was skipped, breaking the RLE stream. Fix #6255. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38890 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/tools/generate_boot_screen.cpp | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/src/tools/generate_boot_screen.cpp b/src/tools/generate_boot_screen.cpp index 738a25e693..27b09485e6 100644 --- a/src/tools/generate_boot_screen.cpp +++ b/src/tools/generate_boot_screen.cpp @@ -201,19 +201,18 @@ write_24bit_image(const char* baseName, int width, int height, png_bytep* rowPtr } buffer[0] = 0; } - buffer[0]++; - buffer[buffer[0]] = row[x]; - } else if (count > 0) { - buffer[0] = 1; - buffer[1] = row[x]; - bufferActive = true; - if (count > 1) { + } else { + if (count > 0) { fprintf(sOutput, "%d, ", count); new_line_if_required(); fprintf(sOutput, "%d, ", currentValue); new_line_if_required(); } + buffer[0] = 0; + bufferActive = true; } + buffer[0]++; + buffer[buffer[0]] = row[x]; currentValue = row[x]; } } @@ -304,19 +303,18 @@ write_8bit_image(const char* baseName, int width, int height, unsigned char** ro } buffer[0] = 0; } - buffer[0]++; - buffer[buffer[0]] = row[x]; - } else if (count > 0) { - buffer[0] = 1; - buffer[1] = row[x]; - bufferActive = true; - if (count > 1) { + } else { + if (count > 0) { fprintf(sOutput, "%d, ", count); new_line_if_required(); fprintf(sOutput, "%d, ", currentValue); new_line_if_required(); } + buffer[0] = 0; + bufferActive = true; } + buffer[0]++; + buffer[buffer[0]] = row[x]; currentValue = row[x]; } }