diff --git a/src/add-ons/translators/pngtranslator/Jamfile b/src/add-ons/translators/pngtranslator/Jamfile index 4d0b6eeed2..56abb32f7e 100644 --- a/src/add-ons/translators/pngtranslator/Jamfile +++ b/src/add-ons/translators/pngtranslator/Jamfile @@ -17,7 +17,13 @@ Translator PNGTranslator : PNGTranslator.cpp PNGView.cpp ; -LinkSharedOSLibs PNGTranslator : be translation libpng.a libz.a ; +if ( $(TARGET_PLATFORM) = haiku ) { + LinkSharedOSLibs PNGTranslator : + libbe.so libtranslation.so libpng.so libz.so ; +} else { + LinkSharedOSLibs PNGTranslator : + be translation libpng.a libz.a ; +} Package haiku-translationkit-cvs : PNGTranslator : diff --git a/src/add-ons/translators/pngtranslator/PNGTranslator.cpp b/src/add-ons/translators/pngtranslator/PNGTranslator.cpp index 1a4fc27279..84971878a8 100644 --- a/src/add-ons/translators/pngtranslator/PNGTranslator.cpp +++ b/src/add-ons/translators/pngtranslator/PNGTranslator.cpp @@ -819,7 +819,7 @@ PNGTranslator::translate_from_bits_to_png(BPositionIO *inSource, result = B_ERROR; break; } - + png_set_write_fn(ppng, static_cast(outDestination), pngcb_write_data, pngcb_flush_data); @@ -849,6 +849,10 @@ PNGTranslator::translate_from_bits_to_png(BPositionIO *inSource, } if (nalloc < height) { result = B_NO_MEMORY; + // clear out rest of the pointers, + // so we don't call delete[] with invalid pointers + for (; nalloc < height; nalloc++) + prows[nalloc] = NULL; break; } }