Weak referencing \content of the clipboard in BasicTextUI leaks
authorcyhelsky@netbeans.org
Wed, 18 Apr 2012 10:16:27 +0200
branchleaks
changeset 5228ede286d26d31
parent 5226 0d91c0d45220
Weak referencing \content of the clipboard in BasicTextUI
src/share/classes/javax/swing/plaf/basic/BasicTextUI.java
     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      }