From 8a0c47d4ba4db523d94689b3ac347e9cd35183ce Mon Sep 17 00:00:00 2001 From: Alexander Zvegintsev Date: Thu, 6 Nov 2025 20:24:20 +0000 Subject: [PATCH] 8371225: Missing release of GDK lock in Java_sun_awt_X11_GtkFileDialogPeer_run() Reviewed-by: aivanov, serb --- .../libawt_xawt/awt/sun_awt_X11_GtkFileDialogPeer.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/java.desktop/unix/native/libawt_xawt/awt/sun_awt_X11_GtkFileDialogPeer.c b/src/java.desktop/unix/native/libawt_xawt/awt/sun_awt_X11_GtkFileDialogPeer.c index db6acc0f3d1..9e6fcd423ad 100644 --- a/src/java.desktop/unix/native/libawt_xawt/awt/sun_awt_X11_GtkFileDialogPeer.c +++ b/src/java.desktop/unix/native/libawt_xawt/awt/sun_awt_X11_GtkFileDialogPeer.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2025, 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 @@ -324,8 +324,6 @@ Java_sun_awt_X11_GtkFileDialogPeer_run(JNIEnv * env, jobject jpeer, JNU_CHECK_EXCEPTION(env); } - gtk->gdk_threads_enter(); - const char *title = jtitle == NULL? "": (*env)->GetStringUTFChars(env, jtitle, 0); if (title == NULL) { (*env)->ExceptionClear(env); @@ -333,6 +331,8 @@ Java_sun_awt_X11_GtkFileDialogPeer_run(JNIEnv * env, jobject jpeer, return; } + gtk->gdk_threads_enter(); + if (mode == java_awt_FileDialog_SAVE) { /* Save action */ dialog = gtk->gtk_file_chooser_dialog_new(title, NULL, @@ -360,6 +360,7 @@ Java_sun_awt_X11_GtkFileDialogPeer_run(JNIEnv * env, jobject jpeer, if (jdir != NULL) { const char *dir = (*env)->GetStringUTFChars(env, jdir, 0); if (dir == NULL) { + gtk->gdk_threads_leave(); (*env)->ExceptionClear(env); JNU_ThrowOutOfMemoryError(env, "Could not get dir"); return; @@ -372,6 +373,7 @@ Java_sun_awt_X11_GtkFileDialogPeer_run(JNIEnv * env, jobject jpeer, if (jfile != NULL) { const char *filename = (*env)->GetStringUTFChars(env, jfile, 0); if (filename == NULL) { + gtk->gdk_threads_leave(); (*env)->ExceptionClear(env); JNU_ThrowOutOfMemoryError(env, "Could not get filename"); return;