diff --git a/build_linux64/libamscimglib4.linux64.a b/build_linux64/libamscimglib4.linux64.a index 70356a1..5687b4f 100644 Binary files a/build_linux64/libamscimglib4.linux64.a and b/build_linux64/libamscimglib4.linux64.a differ diff --git a/build_linux64/libamscimglib4.linux64.so b/build_linux64/libamscimglib4.linux64.so index e16bb9e..f95d8bd 100644 Binary files a/build_linux64/libamscimglib4.linux64.so and b/build_linux64/libamscimglib4.linux64.so differ diff --git a/build_linux64/objstore/amscimglib4_image.o b/build_linux64/objstore/amscimglib4_image.o index a0f1278..58a3e14 100644 Binary files a/build_linux64/objstore/amscimglib4_image.o and b/build_linux64/objstore/amscimglib4_image.o differ diff --git a/build_linux64/objstore/amscimglib4_tests.o b/build_linux64/objstore/amscimglib4_tests.o index 2f67644..4932087 100644 Binary files a/build_linux64/objstore/amscimglib4_tests.o and b/build_linux64/objstore/amscimglib4_tests.o differ diff --git a/build_linux64/tests b/build_linux64/tests index fd8511e..251d612 100644 Binary files a/build_linux64/tests and b/build_linux64/tests differ diff --git a/build_mingw64/libamscimglib4.mingw64.dll b/build_mingw64/libamscimglib4.mingw64.dll index ef450a2..2b8844a 100644 Binary files a/build_mingw64/libamscimglib4.mingw64.dll and b/build_mingw64/libamscimglib4.mingw64.dll differ diff --git a/build_mingw64/objstore/amscimglib4_image.o b/build_mingw64/objstore/amscimglib4_image.o index 43547ce..8c74c24 100644 Binary files a/build_mingw64/objstore/amscimglib4_image.o and b/build_mingw64/objstore/amscimglib4_image.o differ diff --git a/build_mingw64/objstore/amscimglib4_tests.o b/build_mingw64/objstore/amscimglib4_tests.o index 780654c..f61c112 100644 Binary files a/build_mingw64/objstore/amscimglib4_tests.o and b/build_mingw64/objstore/amscimglib4_tests.o differ diff --git a/build_mingw64/tests.exe b/build_mingw64/tests.exe index c065ba1..3690b62 100644 Binary files a/build_mingw64/tests.exe and b/build_mingw64/tests.exe differ diff --git a/src/amscimglib4/amscimglib4_image.c b/src/amscimglib4/amscimglib4_image.c index 332bdb2..8f8dd53 100644 --- a/src/amscimglib4/amscimglib4_image.c +++ b/src/amscimglib4/amscimglib4_image.c @@ -90,6 +90,21 @@ AMSCIMGLIB4_API int amscimglib4_image_resize(amscimglib4_image *imgptr, int _siz return amscimglib4_failure; } + //handle zero size images + if(_sizex<0) _sizex = 0; + if(_sizey<0) _sizey = 0; + if(_sizex == 0 || _sizey == 0) + { + imgptr->sizex = 0; + imgptr->sizey = 0; + if(imgptr->data != NULL) + { + free(imgptr->data); + imgptr->data = NULL; + } + return amscimglib4_success; + } + newdata = (unsigned char*) malloc(sizeof(unsigned char)*4*_sizex*_sizey); if(newdata==NULL) { @@ -109,7 +124,7 @@ AMSCIMGLIB4_API int amscimglib4_image_resize(amscimglib4_image *imgptr, int _siz newdata[4*(I+_sizex*J)+K] = imgptr->data[4*(I+imgptr->sizex*J)+K]; } - free(imgptr->data); + if(imgptr->data != NULL) {free(imgptr->data); imgptr->data = NULL; } imgptr->data = newdata; imgptr->sizex = _sizex; imgptr->sizey = _sizey; diff --git a/src/amscimglib4/amscimglib4_tests.c b/src/amscimglib4/amscimglib4_tests.c index 505c316..4d733bf 100644 --- a/src/amscimglib4/amscimglib4_tests.c +++ b/src/amscimglib4/amscimglib4_tests.c @@ -19,6 +19,11 @@ void amscimglib4_test_init() res = amscimglib4_image_resize(img1,500,500); printf("res=%d (%d,%d)\n",res,img1->sizex,img1->sizey); res = amscimglib4_image_copy(img2,img1); printf("res=%d, img2=(%d,%d), img1=(%d,%d)\n",res, img2->sizex,img2->sizey,img1->sizex,img1->sizey); + res = amscimglib4_image_resize(img1,-10,3); printf("res=%d (%d,%d)\n",res,img1->sizex,img1->sizey); + res = amscimglib4_image_resize(img1,0,0); printf("res=%d (%d,%d)\n",res,img1->sizex,img1->sizey); + res = amscimglib4_image_copy(img2,img1); printf("res=%d, img2=(%d,%d), img1=(%d,%d)\n",res, img2->sizex,img2->sizey,img1->sizex,img1->sizey); + + amscimglib4_image_delete(&img1); amscimglib4_image_delete(&img2); diff --git a/src/main.cpp b/src/main.cpp index e669072..19cc209 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -5,7 +5,7 @@ int main(int argc, char* argv[]) { int ret = 0; - //amscimglib4_test_init(); + amscimglib4_test_init(); amscimglib4_test_loadsave(); return ret;