Skip to content

Commit dbd43a3

Browse files
committed
8363813: Missing null check in GlassScreen
Reviewed-by: kcr, kizune, jvos, jdv
1 parent 7b59ebc commit dbd43a3

File tree

4 files changed

+26
-20
lines changed

4 files changed

+26
-20
lines changed

modules/javafx.graphics/src/main/native-glass/gtk/glass_screen.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -209,10 +209,12 @@ jobjectArray rebuild_screens(JNIEnv* env) {
209209
JNI_EXCEPTION_TO_CPP(env)
210210
LOG1("Available monitors: %d\n", n_monitors)
211211

212-
int i;
213-
for (i=0; i < n_monitors; i++) {
214-
env->SetObjectArrayElement(jscreens, i, createJavaScreen(env, default_gdk_screen, i));
215-
JNI_EXCEPTION_TO_CPP(env)
212+
if (jscreens != NULL) {
213+
int i;
214+
for (i=0; i < n_monitors; i++) {
215+
env->SetObjectArrayElement(jscreens, i, createJavaScreen(env, default_gdk_screen, i));
216+
JNI_EXCEPTION_TO_CPP(env)
217+
}
216218
}
217219

218220
return jscreens;

modules/javafx.graphics/src/main/native-glass/ios/GlassScreen.m

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,11 @@ jobjectArray createJavaScreens(JNIEnv* env) {
8787
mat_jScreenClass,
8888
NULL);
8989

90-
for (NSUInteger index = 0; index < [screens count]; index++) {
91-
jobject javaScreen = createJavaScreen(env, [screens objectAtIndex:index]);
92-
(*env)->SetObjectArrayElement(env, screenArray, index, javaScreen);
90+
if (screenArray != NULL) {
91+
for (NSUInteger index = 0; index < [screens count]; index++) {
92+
jobject javaScreen = createJavaScreen(env, [screens objectAtIndex:index]);
93+
(*env)->SetObjectArrayElement(env, screenArray, index, javaScreen);
94+
}
9395
}
9496

9597
return screenArray;

modules/javafx.graphics/src/main/native-glass/mac/GlassScreen.m

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -135,20 +135,22 @@ jobjectArray createJavaScreens(JNIEnv* env) {
135135
jScreenClass,
136136
NULL);
137137
GLASS_CHECK_EXCEPTION(env);
138-
maxScreenDimensions = NSMakeSize(0.f,0.f);
139-
for (NSUInteger index = 0; index < [screens count]; index++) {
140-
NSRect screenRect = [[screens objectAtIndex:index] frame];
138+
if (screenArray != NULL) {
139+
maxScreenDimensions = NSMakeSize(0.f,0.f);
140+
for (NSUInteger index = 0; index < [screens count]; index++) {
141+
NSRect screenRect = [[screens objectAtIndex:index] frame];
141142

142-
if (screenRect.size.width > maxScreenDimensions.width) {
143-
maxScreenDimensions.width = screenRect.size.width;
144-
}
145-
if (screenRect.size.height > maxScreenDimensions.height) {
146-
maxScreenDimensions.height = screenRect.size.height;
147-
}
143+
if (screenRect.size.width > maxScreenDimensions.width) {
144+
maxScreenDimensions.width = screenRect.size.width;
145+
}
146+
if (screenRect.size.height > maxScreenDimensions.height) {
147+
maxScreenDimensions.height = screenRect.size.height;
148+
}
148149

149-
jobject javaScreen = createJavaScreen(env, [screens objectAtIndex:index]);
150-
(*env)->SetObjectArrayElement(env, screenArray, index, javaScreen);
151-
GLASS_CHECK_EXCEPTION(env);
150+
jobject javaScreen = createJavaScreen(env, [screens objectAtIndex:index]);
151+
(*env)->SetObjectArrayElement(env, screenArray, index, javaScreen);
152+
GLASS_CHECK_EXCEPTION(env);
153+
}
152154
}
153155

154156
return screenArray;

modules/javafx.graphics/src/main/native-glass/win/GlassScreen.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -603,7 +603,7 @@ jobjectArray GlassScreen::CreateJavaScreens(JNIEnv *env)
603603
jclass screenCls = GetScreenCls(env);
604604

605605
jobjectArray jScreens = env->NewObjectArray(numMonitors, screenCls, NULL);
606-
if (CheckAndClearException(env)) {
606+
if (CheckAndClearException(env) || jScreens == NULL) {
607607
free(g_MonitorInfos.pMonitorInfos);
608608
g_MonitorInfos.numInfos = g_MonitorInfos.maxInfos = 0;
609609
g_MonitorInfos.pMonitorInfos = NULL;

0 commit comments

Comments
 (0)