Fix run length encoding of marked image, bump to version 0.8 master
authorAndreas Eversberg <jolly@eversberg.eu>
Thu, 17 May 2018 18:12:14 +0000 (20:12 +0200)
committerAndreas Eversberg <jolly@eversberg.eu>
Thu, 17 May 2018 18:12:14 +0000 (20:12 +0200)
src/mark.c
version.h

index 3d5143f..bf609f8 100644 (file)
@@ -96,6 +96,10 @@ static int encode_rle(unsigned char *in, unsigned char *out, int width, int heig
        for (i = 0; i < n;) {
                v = in[i++];
                for (l = 1; l < 255; l++) {
+                       /* end of input data */
+                       if (i == n)
+                               break;
+                       /* change in color */
                        if (v != in[i])
                                break;
                        i++;
@@ -183,8 +187,15 @@ static int decode_rle(unsigned char *in, int len, int width, int height)
                        return -EIO;
                }
                v = in[i++];
+               if (j + l > n) {
+                       l = n - j;
+                       printf("Warning: RLE encoding exceeds image size\n");
+               }
                memset(out+j, v, l);
                j += l;
+               /* end of output data */
+               if (j == n)
+                       break;
        }
 
        memcpy(in, out, n);
index 068b58f..e9c6516 100644 (file)
--- a/version.h
+++ b/version.h
@@ -1 +1 @@
-"0.7c"
+"0.8"