From bd55fa553f16aca12d5c882be26e528f35752ae8 Mon Sep 17 00:00:00 2001 From: Pino Toscano Date: Fri, 3 Mar 2017 10:39:10 +0100 Subject: [PATCH] java: fix possible memory leak on error Use CLEANUP_FREE to properly dispose the temporary array used for StringList, DeviceList, FilenameList, and OStringList parameters: this way, an early return (jumping to the ret_error label) will not forget cleaning them up. --- generator/java.ml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/generator/java.ml b/generator/java.ml index 2606f979f..66729c6fe 100644 --- a/generator/java.ml +++ b/generator/java.ml @@ -715,7 +715,7 @@ throw_out_of_memory (JNIEnv *env, const char *msg) pr " size_t %s_size;\n" n | StringList n | DeviceList n | FilenameList n -> pr " size_t %s_len;\n" n; - pr " char **%s;\n" n + pr " CLEANUP_FREE char **%s = NULL;\n" n | Bool n | Int n -> pr " int %s;\n" n @@ -734,7 +734,7 @@ throw_out_of_memory (JNIEnv *env, const char *msg) | OBool _ | OInt _ | OInt64 _ | OString _ -> () | OStringList n -> pr " size_t %s_len;\n" n; - pr " char **%s;\n" n + pr " CLEANUP_FREE char **%s = NULL;\n" n ) optargs ); @@ -857,7 +857,6 @@ throw_out_of_memory (JNIEnv *env, const char *msg) n; pr " (*env)->ReleaseStringUTFChars (env, o, %s[i]);\n" n; pr " }\n"; - pr " free (%s);\n" n | Bool _ | Int _ | Int64 _ @@ -875,7 +874,6 @@ throw_out_of_memory (JNIEnv *env, const char *msg) n; pr " (*env)->ReleaseStringUTFChars (env, o, optargs_s.%s[i]);\n" n; pr " }\n"; - pr " free (%s);\n" n ) optargs; pr "\n";