From 78ee0b6ff23866527d08fcba2b00f3ae19de2fd1 Mon Sep 17 00:00:00 2001 From: Anton Litvinov Date: Thu, 15 Aug 2013 14:20:09 +0400 Subject: [PATCH] 7191018: Manual test closed/java/awt/JAWT causes JVM to crash starting from JDK 5 Reviewed-by: anthony, serb --- jdk/src/solaris/native/sun/awt/awt_DrawingSurface.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/jdk/src/solaris/native/sun/awt/awt_DrawingSurface.c b/jdk/src/solaris/native/sun/awt/awt_DrawingSurface.c index fe19f990aaa..0609c9d4f06 100644 --- a/jdk/src/solaris/native/sun/awt/awt_DrawingSurface.c +++ b/jdk/src/solaris/native/sun/awt/awt_DrawingSurface.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2013, 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 @@ -346,13 +346,19 @@ JNIEXPORT jobject JNICALL awt_GetComponent(JNIEnv* env, void* platformInfo) { Window window = (Window)platformInfo; - Widget widget = NULL; jobject peer = NULL; jobject target = NULL; AWT_LOCK(); - target = (*env)->GetObjectField(env, peer, targetID); + if (window != None) { + peer = JNU_CallStaticMethodByName(env, NULL, "sun/awt/X11/XToolkit", + "windowToXWindow", "(J)Lsun/awt/X11/XBaseWindow;", (jlong)window).l; + } + if ((peer != NULL) && + (JNU_IsInstanceOfByName(env, peer, "sun/awt/X11/XWindow") == 1)) { + target = (*env)->GetObjectField(env, peer, targetID); + } if (target == NULL) { JNU_ThrowNullPointerException(env, "NullPointerException"); @@ -360,7 +366,6 @@ JNIEXPORT jobject JNICALL return (jobject)NULL; } - AWT_UNLOCK(); return target;