diff --git a/.github/travis_testsuite_1.sh b/.github/travis_testsuite_1.sh index cbd48ab4..7a3fefbe 100644 --- a/.github/travis_testsuite_1.sh +++ b/.github/travis_testsuite_1.sh @@ -79,7 +79,10 @@ if [[ $TRAVIS_OS_NAME == osx ]]; then fi upx=$PWD/upx.out if [[ $B =~ (^|\+)valgrind($|\+) ]]; then - upx="valgrind --leak-check=full --show-reachable=yes $upx" + valgrind_flags="--leak-check=full --show-reachable=yes" + valgrind_flags="-q --leak-check=no --error-exitcode=1" + valgrind_flags="--leak-check=no --error-exitcode=1" + upx="valgrind $valgrind_flags $upx" fi upx_391= if [[ $TRAVIS_OS_NAME == linux ]]; then diff --git a/.github/travis_testsuite_2.sh b/.github/travis_testsuite_2.sh index 65380518..51ae5403 100644 --- a/.github/travis_testsuite_2.sh +++ b/.github/travis_testsuite_2.sh @@ -29,7 +29,10 @@ if [[ $TRAVIS_OS_NAME == osx ]]; then fi upx=$PWD/upx.out if [[ $B =~ (^|\+)valgrind($|\+) ]]; then - upx="valgrind --leak-check=full --show-reachable=yes $upx" + valgrind_flags="--leak-check=full --show-reachable=yes" + valgrind_flags="-q --leak-check=no --error-exitcode=1" + valgrind_flags="--leak-check=no --error-exitcode=1" + upx="valgrind $valgrind_flags $upx" fi upx_391= if [[ $TRAVIS_OS_NAME == linux ]]; then diff --git a/src/compress_ucl.cpp b/src/compress_ucl.cpp index 64054325..597c37e5 100644 --- a/src/compress_ucl.cpp +++ b/src/compress_ucl.cpp @@ -281,6 +281,11 @@ int upx_ucl_test_overlap ( const upx_bytep buf, // misc **************************************************************************/ +extern "C" { +static ucl_voidp __UCL_CDECL my_malloc(ucl_uint n) { return calloc(1, n); } +static void __UCL_CDECL my_free(ucl_voidp p) { free(p); } +} + int upx_ucl_init(void) { if (ucl_init() != UCL_E_OK) @@ -289,6 +294,7 @@ int upx_ucl_init(void) if (UCL_VERSION != ucl_version()) return -2; #endif + ucl_set_malloc_hooks(my_malloc, my_free); return 0; }