1.1 --- a/src/share/classes/javax/swing/plaf/basic/BasicTextUI.java Mon Mar 19 10:47:48 2012 +0100
1.2 +++ b/src/share/classes/javax/swing/plaf/basic/BasicTextUI.java Wed Apr 18 10:16:27 2012 +0200
1.3 @@ -31,6 +31,7 @@
1.4 import java.awt.im.InputContext;
1.5 import java.beans.*;
1.6 import java.io.*;
1.7 +import java.lang.ref.WeakReference;
1.8 import javax.swing.*;
1.9 import javax.swing.plaf.*;
1.10 import javax.swing.text.*;
1.11 @@ -2548,7 +2549,7 @@
1.12 TextTransferable(JTextComponent c, int start, int end) {
1.13 super(null, null);
1.14
1.15 - this.c = c;
1.16 + this.c = new WeakReference<>(c);
1.17
1.18 Document doc = c.getDocument();
1.19
1.20 @@ -2582,9 +2583,10 @@
1.21 }
1.22
1.23 void removeText() {
1.24 - if ((p0 != null) && (p1 != null) && (p0.getOffset() != p1.getOffset())) {
1.25 + JTextComponent tc = c.get();
1.26 + if ((tc!=null) && (p0 != null) && (p1 != null) && (p0.getOffset() != p1.getOffset())) {
1.27 try {
1.28 - Document doc = c.getDocument();
1.29 + Document doc = tc.getDocument();
1.30 doc.remove(p0.getOffset(), p1.getOffset() - p0.getOffset());
1.31 } catch (BadLocationException e) {
1.32 }
1.33 @@ -2637,7 +2639,7 @@
1.34 Position p1;
1.35 String mimeType;
1.36 String richText;
1.37 - JTextComponent c;
1.38 + WeakReference<JTextComponent> c;
1.39 }
1.40
1.41 }