kwo pushed a commit to branch master. http://git.enlightenment.org/legacy/imlib2.git/commit/?id=4fa2ad8566b3203f857224d4106d4aa0acd2d9ff
commit 4fa2ad8566b3203f857224d4106d4aa0acd2d9ff Author: Kim Woelders <k...@woelders.dk> Date: Mon Apr 12 09:26:37 2021 +0200 LBM loader: Fix handling of missing RLE data The missing bytes were cleared at the start of the line, not the end. --- src/modules/loaders/loader_lbm.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/modules/loaders/loader_lbm.c b/src/modules/loaders/loader_lbm.c index 434f723..155f9da 100644 --- a/src/modules/loaders/loader_lbm.c +++ b/src/modules/loaders/loader_lbm.c @@ -189,15 +189,18 @@ bodyrow(unsigned char *p, int z, ILBM * ilbm) return; } - for (i = 0; i < z;) + for (i = 0; i < z; i += w) { b = ilbm->body.data[ilbm->offset++]; while (b == 0x80 && ilbm->offset < ilbm->body.size) b = ilbm->body.data[ilbm->offset++]; - if (ilbm->offset >= ilbm->body.size) - break; - if (b & 0x80) + if (ilbm->offset >= ilbm->body.size) + { + w = z - i; + memset(p + i, 0, w); + } + else if (b & 0x80) { w = (0x100 - b) + 1; if (w > z - i) @@ -205,7 +208,6 @@ bodyrow(unsigned char *p, int z, ILBM * ilbm) b = ilbm->body.data[ilbm->offset++]; memset(p + i, b, w); - i += w; } else { @@ -214,13 +216,10 @@ bodyrow(unsigned char *p, int z, ILBM * ilbm) w = ilbm->body.size - ilbm->offset; x = (w <= z - i) ? w : z - i; memcpy(p + i, ilbm->body.data + ilbm->offset, x); - i += x; ilbm->offset += w; + w = x; } } - - if (i < z) - memset(p, 0, z - i); } /*------------------------------------------------------------------------------ --