jdk/src/java.desktop/share/classes/javax/swing/tree/DefaultTreeModel.java
changeset 26037 508779ce6619
parent 26001 991e1be0b235
parent 25859 3317bb8137f4
child 29894 3e16b51732f5
--- a/jdk/src/java.desktop/share/classes/javax/swing/tree/DefaultTreeModel.java	Mon Aug 18 14:03:21 2014 +0100
+++ b/jdk/src/java.desktop/share/classes/javax/swing/tree/DefaultTreeModel.java	Tue Aug 19 10:32:16 2014 -0700
@@ -691,7 +691,13 @@
 
     private void readObject(ObjectInputStream s)
         throws IOException, ClassNotFoundException {
-        s.defaultReadObject();
+        ObjectInputStream.GetField f = s.readFields();
+        EventListenerList newListenerList = (EventListenerList) f.get("listenerList", null);
+        if (newListenerList == null) {
+            throw new InvalidObjectException("Null listenerList");
+        }
+        listenerList = newListenerList;
+        asksAllowsChildren = f.get("asksAllowsChildren", false);
 
         Vector<?>       values = (Vector)s.readObject();
         int             indexCounter = 0;
@@ -699,7 +705,11 @@
 
         if(indexCounter < maxCounter && values.elementAt(indexCounter).
            equals("root")) {
-            root = (TreeNode)values.elementAt(++indexCounter);
+            TreeNode newRoot  = (TreeNode)values.elementAt(++indexCounter);
+            if (newRoot == null) {
+                throw new InvalidObjectException("Null root");
+            }
+            root = newRoot;
             indexCounter++;
         }
     }