Hi, I have stumbled across a problem in Imlib2 wrt language bindings. imlib_image_put_back_data() assumes that the data pointer it has been given points is the same that was returned by imlib_image_get_data().
When you're not using Imlib2's C interface, but some language binding, this restriction can be hard to meet. I suggest to apply the attached patch, which will memcpy() the data if the pointer passed isn't the original pointer. Is this okay to commit? Regards, Tilman -- learn to quote: http://www.netmeister.org/news/learn2quote.html
Index: api.c =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/imlib2/src/lib/api.c,v retrieving revision 1.2 diff -u -r1.2 api.c --- api.c 2 Mar 2005 21:33:49 -0000 1.2 +++ api.c 29 May 2005 11:46:58 -0000 @@ -1479,6 +1479,10 @@ CHECK_PARAM_POINTER("imlib_image_put_back_data", "image", ctx->image); CHECK_PARAM_POINTER("imlib_image_put_back_data", "data", data); CAST_IMAGE(im, ctx->image); + + if (im->data != data) + memcpy(im->data, data, im->h * im->w * 4); + __imlib_DirtyImage(im); data = NULL; }