From 321770ecbdce86aafb9f9c45db0bdcda678c643a Mon Sep 17 00:00:00 2001 From: Flaviu Tamas Date: Tue, 18 Oct 2022 23:54:34 -0400 Subject: [PATCH] Fixes failed paste when X clipboard is in a certain state This is a widespread issue, see: - https://youtrack.jetbrains.com/issue/JBR-438/Clipboard-operations-arent-working-in-certain-state-of-Xorg-selection-buffers - https://www.google.com/search?q="Failed+to+retrieve+atom+name"+"DataTransferer" Verified to work by running IntelliJ Clion under the modified VM and verifying that paste from my terminal, which previously did not work, now works. --- .../sun/awt/datatransfer/DataTransferer.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/java.desktop/share/classes/sun/awt/datatransfer/DataTransferer.java b/src/java.desktop/share/classes/sun/awt/datatransfer/DataTransferer.java index 8ca34787e19..dc40b3d336d 100644 --- a/src/java.desktop/share/classes/sun/awt/datatransfer/DataTransferer.java +++ b/src/java.desktop/share/classes/sun/awt/datatransfer/DataTransferer.java @@ -421,7 +421,13 @@ public abstract class DataTransferer { // flavorMap - after this step, this map maps each of the DataFlavors // from flavorSet to any of the specified formats. for (long format : formats) { - String nat = getNativeForFormat(format); + String nat; + try { + nat = getNativeForFormat(format); + } catch (NullPointerException e) { + // protect against bogus atoms, see https://hg.mozilla.org/releases/mozilla-1.9.1/rev/62f3d28797e2 + continue; + } List flavors = map.getFlavorsForNative(nat); for (DataFlavor flavor : flavors) { // Don't explicitly test for String, since it is just a special @@ -485,7 +491,14 @@ public abstract class DataTransferer { Set flavorSet = new HashSet<>(formats.length); for (long format : formats) { - List flavors = map.getFlavorsForNative(getNativeForFormat(format)); + String nat; + try { + nat = getNativeForFormat(format); + } catch (NullPointerException e) { + // protect against bogus atoms, see https://hg.mozilla.org/releases/mozilla-1.9.1/rev/62f3d28797e2 + continue; + } + List flavors = map.getFlavorsForNative(nat); for (DataFlavor flavor : flavors) { // Don't explicitly test for String, since it is just a special // case of Serializable -- 2.38.0