summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/im_image.h3
-rw-r--r--src/lua5/imlua_image.c6
-rw-r--r--src/process/im_quantize.cpp5
3 files changed, 8 insertions, 6 deletions
diff --git a/include/im_image.h b/include/im_image.h
index 09de54b..12dbad8 100644
--- a/include/im_image.h
+++ b/include/im_image.h
@@ -183,7 +183,8 @@ void imImageClear(imImage* image);
int imImageIsBitmap(const imImage* image);
/** Changes the image palette.
- * This will destroy the existing palette and replace it with the given palette buffer.
+ * This will destroy the existing palette and replace it with the given palette pointer.
+ * Only the pointer is stored, so the palette should be a new palette and it can not be a static array.
*
* \verbatim image:SetPalette(palette: imPalette) [in Lua 5] \endverbatim
* \ingroup imgclass */
diff --git a/src/lua5/imlua_image.c b/src/lua5/imlua_image.c
index 6d5ea2b..40b1e9c 100644
--- a/src/lua5/imlua_image.c
+++ b/src/lua5/imlua_image.c
@@ -2,7 +2,7 @@
* \brief IM Lua 5 Binding
*
* See Copyright Notice in im_lib.h
- * $Id: imlua_image.c,v 1.4 2009/08/19 21:33:55 scuri Exp $
+ * $Id: imlua_image.c,v 1.5 2009/09/25 18:40:31 scuri Exp $
*/
#include <string.h>
@@ -479,7 +479,9 @@ static int imluaImageSetPalette (lua_State *L)
{
imImage *image = imlua_checkimage(L, 1);
imluaPalette *pal = imlua_checkpalette(L, 2);
- imImageSetPalette(image, pal->color, pal->count);
+ long* palette = (long*)malloc(sizeof(long)*256);
+ memcpy(palette, pal->color, pal->count*sizeof(long));
+ imImageSetPalette(image, palette, pal->count);
return 0;
}
diff --git a/src/process/im_quantize.cpp b/src/process/im_quantize.cpp
index 9a65f4c..de78cf4 100644
--- a/src/process/im_quantize.cpp
+++ b/src/process/im_quantize.cpp
@@ -2,7 +2,7 @@
* \brief Additional Image Quantization Operations
*
* See Copyright Notice in im_lib.h
- * $Id: im_quantize.cpp,v 1.1 2008/10/17 06:16:33 scuri Exp $
+ * $Id: im_quantize.cpp,v 1.2 2009/09/25 18:40:32 scuri Exp $
*/
@@ -24,8 +24,7 @@ void imProcessQuantizeRGBUniform(const imImage* src_image, imImage* dst_image, i
*green_map=(imbyte*)src_image->data[1],
*blue_map=(imbyte*)src_image->data[2];
- long *palette = imPaletteUniform();
- imImageSetPalette(dst_image, palette, 256);
+ imImageSetPalette(dst_image, imPaletteUniform(), 256);
for (int y = 0; y < src_image->height; y++)
{