diff --git a/test/jdk/java/lang/String/nativeEncoding/libstringPlatformChars.c b/test/jdk/java/lang/String/nativeEncoding/libstringPlatformChars.c index 99dbd92d92e06..91c6f8edbc085 100644 --- a/test/jdk/java/lang/String/nativeEncoding/libstringPlatformChars.c +++ b/test/jdk/java/lang/String/nativeEncoding/libstringPlatformChars.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -58,19 +58,23 @@ Java_StringPlatformChars_newString(JNIEnv *env, jclass unused, jbyteArray bytes) char* str; int len = (*env)->GetArrayLength(env, bytes); int i; - jbyte* jbytes; - - str = (char*)malloc(len + 1); - jbytes = (*env)->GetPrimitiveArrayCritical(env, bytes, NULL); + jbyte* jbytes = (*env)->GetPrimitiveArrayCritical(env, bytes, NULL); if (jbytes == NULL) { return NULL; } + str = (char*)malloc(len + 1); + if (str == NULL) { + (*env)->ReleasePrimitiveArrayCritical(env, bytes, (void*)jbytes, 0); + return NULL; + } for (i = 0; i < len; i++) { str[i] = (char)jbytes[i]; } str[len] = '\0'; (*env)->ReleasePrimitiveArrayCritical(env, bytes, (void*)jbytes, 0); - return JNU_NewStringPlatform(env, str); + jstring res = JNU_NewStringPlatform(env, str); + free(str); + return res; }