< prev index next >

src/java.desktop/unix/native/libawt_xawt/awt/awt_UNIXToolkit.c

Print this page

        

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 2004, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2019, 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
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.  Oracle designates this

@@ -111,30 +111,32 @@
 Java_sun_awt_UNIXToolkit_load_1gtk_1icon(JNIEnv *env, jobject this,
         jstring filename)
 {
 #ifndef HEADLESS
     int len;
+    jsize jlen;
     char *filename_str = NULL;
     GError **error = NULL;
 
     if (filename == NULL)
     {
         return JNI_FALSE;
     }
 
     len = (*env)->GetStringUTFLength(env, filename);
+    jlen = (*env)->GetStringLength(env, filename);
     filename_str = (char *)SAFE_SIZE_ARRAY_ALLOC(malloc,
             sizeof(char), len + 1);
     if (filename_str == NULL) {
         JNU_ThrowOutOfMemoryError(env, "OutOfMemoryError");
         return JNI_FALSE;
     }
     if (!init_method(env, this) ) {
         free(filename_str);
         return JNI_FALSE;
     }
-    (*env)->GetStringUTFRegion(env, filename, 0, len, filename_str);
+    (*env)->GetStringUTFRegion(env, filename, 0, jlen, filename_str);
     jboolean result = gtk->get_file_icon_data(env, filename_str, error,
                                             icon_upcall_method, this);
 
     /* Release the strings we've allocated. */
     free(filename_str);

@@ -157,40 +159,43 @@
         jint widget_type, jstring stock_id, jint icon_size,
         jint text_direction, jstring detail)
 {
 #ifndef HEADLESS
     int len;
+    jsize jlen;
     char *stock_id_str = NULL;
     char *detail_str = NULL;
     jboolean result = JNI_FALSE;
 
     if (stock_id == NULL)
     {
         return JNI_FALSE;
     }
 
     len = (*env)->GetStringUTFLength(env, stock_id);
+    jlen = (*env)->GetStringLength(env, stock_id);
     stock_id_str = (char *)SAFE_SIZE_ARRAY_ALLOC(malloc,
             sizeof(char), len + 1);
     if (stock_id_str == NULL) {
         JNU_ThrowOutOfMemoryError(env, "OutOfMemoryError");
         return JNI_FALSE;
     }
-    (*env)->GetStringUTFRegion(env, stock_id, 0, len, stock_id_str);
+    (*env)->GetStringUTFRegion(env, stock_id, 0, jlen, stock_id_str);
 
     /* Detail isn't required so check for NULL. */
     if (detail != NULL)
     {
         len = (*env)->GetStringUTFLength(env, detail);
+        jlen = (*env)->GetStringLength(env, detail);
         detail_str = (char *)SAFE_SIZE_ARRAY_ALLOC(malloc,
                 sizeof(char), len + 1);
         if (detail_str == NULL) {
             free(stock_id_str);
             JNU_ThrowOutOfMemoryError(env, "OutOfMemoryError");
             return JNI_FALSE;
         }
-        (*env)->GetStringUTFRegion(env, detail, 0, len, detail_str);
+        (*env)->GetStringUTFRegion(env, detail, 0, jlen, detail_str);
     }
 
     if (init_method(env, this)) {
         result = gtk->get_icon_data(env, widget_type, stock_id_str,
                                     icon_size, text_direction, detail_str,
< prev index next >