< prev index next >
src/java.desktop/macosx/native/libsplashscreen/splashscreen_sys.m
Print this page
@@ -131,20 +131,20 @@
// If this property is present we are running SWT
snprintf(envVar, sizeof(envVar), "JAVA_STARTED_ON_FIRST_THREAD_%d", getpid());
return getenv(envVar) != NULL;
}
-char* SplashGetScaledImageName(const char* jar, const char* file,
- float *scaleFactor) {
+jboolean SplashGetScaledImageName(const char* jar, const char* file,
+ float *scaleFactor, char *scaledFile,
+ const size_t scaledImageLength) {
*scaleFactor = 1;
if(isSWTRunning()){
- return nil;
+ return JNI_FALSE;
}
NSAutoreleasePool *pool = [NSAutoreleasePool new];
- char* scaledFile = nil;
__block float screenScaleFactor = 1;
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
// initialize NSApplication and AWT stuff
[NSApplicationAWT sharedApplication];
@@ -168,16 +168,22 @@
[fileName substringFromIndex: dotIndex]];
}
if ((fileName2x != nil) && (jar || [[NSFileManager defaultManager]
fileExistsAtPath: fileName2x])){
+ if (strlen([fileName2x UTF8String]) > scaledImageLength) {
+ [pool drain];
+ return JNI_FALSE;
+ }
*scaleFactor = 2;
- scaledFile = strdup([fileName2x UTF8String]);
+ strcpy(scaledFile, [fileName2x UTF8String]);
+ [pool drain];
+ return JNI_TRUE;
}
}
[pool drain];
- return scaledFile;
+ return JNI_FALSE;
}
void
SplashInitPlatform(Splash * splash) {
pthread_mutex_init(&splash->lock, NULL);
< prev index next >