< prev index next >

src/java.base/share/native/libjli/java.c

Print this page

        

@@ -1818,20 +1818,28 @@
     const char *file_name = getenv(SPLASH_FILE_ENV_ENTRY);
     int data_size;
     void *image_data = NULL;
     float scale_factor = 1;
     char *scaled_splash_name = NULL;
-
+    size_t maxScaledImgNameLength = 0;
     if (file_name == NULL){
         return;
     }
-
-    scaled_splash_name = DoSplashGetScaledImageName(
-                        jar_name, file_name, &scale_factor);
+    //Max scaled Image file name length
+    maxScaledImgNameLength = JLI_StrLen(file_name) +
+                                  JLI_StrLen(".java-scale-200") + 1;
+
+    scaled_splash_name = JLI_MemAlloc(
+                            maxScaledImgNameLength * sizeof(char));
+    
+    memset(scaled_splash_name, '\0', maxScaledImgNameLength * sizeof(char));
+    DoSplashGetScaledImageName(jar_name, file_name,
+                                &scale_factor,
+                                 scaled_splash_name, maxScaledImgNameLength);
     if (jar_name) {
 
-        if (scaled_splash_name) {
+        if (scaled_splash_name[0] != '\0') {
             image_data = JLI_JarUnpackFile(
                     jar_name, scaled_splash_name, &data_size);
         }
 
         if (!image_data) {

@@ -1845,21 +1853,18 @@
             DoSplashLoadMemory(image_data, data_size);
             JLI_MemFree(image_data);
         }
     } else {
         DoSplashInit();
-        if (scaled_splash_name) {
+        if (scaled_splash_name[0] != '\0') {
             DoSplashSetScaleFactor(scale_factor);
             DoSplashLoadFile(scaled_splash_name);
         } else {
             DoSplashLoadFile(file_name);
         }
     }
-
-    if (scaled_splash_name) {
         JLI_MemFree(scaled_splash_name);
-    }
 
     DoSplashSetFileJarName(file_name, jar_name);
 
     /*
      * Done with all command line processing and potential re-execs so
< prev index next >