]> git.neil.brown.name Git - edlib.git/commitdiff
ncurses: don't look past the end of an image.
authorNeilBrown <neil@brown.name>
Fri, 6 Oct 2023 22:02:48 +0000 (09:02 +1100)
committerNeilBrown <neil@brown.name>
Sat, 7 Oct 2023 01:06:37 +0000 (12:06 +1100)
If the image is an odd number of rows, we need to use something else for
the last row displayed.

Signed-off-by: NeilBrown <neil@brown.name>
display-ncurses.c

index 84f14022e2ca6c7108f72845dace853a68f6db4f..55c21c21e1007eb994e095c05829ef176fcffc89 100644 (file)
@@ -1048,11 +1048,15 @@ DEF_CB(nc_draw_image_cb)
 
                for (i = 0; i < dii->h; i+= 2) {
                        static const wint_t hilo = 0x2580; /* L'▀' */
+                       static unsigned char blk[4] = "\0\0\0";
                        for (j = 0; j < dii->w ; j+= 1) {
                                unsigned char *p1 = buf + i*dii->w*4 + j*4;
-                               unsigned char *p2 = buf + (i+1)*dii->w*4 + j*4;
-                               int rgb1[3] = { p1[0]*1000/255, p1[1]*1000/255, p1[2]*1000/255 };
-                               int rgb2[3] = { p2[0]*1000/255, p2[1]*1000/255, p2[2]*1000/255 };
+                               unsigned char *p2 = i + 1 < dii->h ?
+                                       buf + (i+1)*dii->w*4 + j*4 : blk;
+                               int rgb1[3] = { p1[0]*1000/255, p1[1]*1000/255,
+                                              p1[2]*1000/255 };
+                               int rgb2[3] = { p2[0]*1000/255, p2[1]*1000/255,
+                                              p2[2]*1000/255 };
                                int fg = find_col(dd, rgb1);
                                int bg = find_col(dd, rgb2);