I've been digging into a segfault that was preventing 'make doc' from operating correctly, and pinned it down to this code:
src/modules/Image/colortable.c:2010 - rnd->u.refs++; + ++*rnd->u.refs;
and corresponding decrementing of the refcount. The count appears to be a pointer, not a direct integer, so it looks like it ought to be dereferenced here.
Not 100% sure the fix is correct though, so I pushed to branch rosuav/colortable-segfault instead of directly to 8.1. Can someone check it, please?
Test case, cribbed from the code behind 'make doc':
#define IMAGE_DIR "/home/rosuav/pike/refdoc/src_images/" object lena() { catch { return Image.load(IMAGE_DIR + "image_ill.pnm"); }; catch { return Image.load(IMAGE_DIR + "lena.ppm"); }; catch { return Image.load(IMAGE_DIR + "lenna.rs"); }; return Image.load(IMAGE_DIR + "lena.gif"); } int main() { object c=Image.Colortable(lena(),2)->randomcube(60,60,60); c*lena(); }
ChrisA
Probably correct. We really should have all the image operations performed in the image testasuite as well...
pike-devel@lists.lysator.liu.se