In the AsyncImage we need to ignore (legal) null observers otherwise we
get NPEs.

2006-12-05  Roman Kennke  <[EMAIL PROTECTED]>

        * gnu/java/awt/peer/gtk/AsyncImage.java
        (addObserver): Check for null and ignore null observers.
        (getWidth): Check for null and ignore null observers.
        (getHeight): Check for null and ignore null observers.
        (getProperty): Check for null and ignore null observers.

/Roman

Index: gnu/java/awt/peer/gtk/AsyncImage.java
===================================================================
RCS file: /cvsroot/classpath/classpath/gnu/java/awt/peer/gtk/AsyncImage.java,v
retrieving revision 1.1
diff -u -1 -5 -r1.1 AsyncImage.java
--- gnu/java/awt/peer/gtk/AsyncImage.java	5 Dec 2006 11:11:16 -0000	1.1
+++ gnu/java/awt/peer/gtk/AsyncImage.java	5 Dec 2006 21:37:35 -0000
@@ -153,90 +153,102 @@
   {
     // Nothing to do here.
   }
 
   public Graphics getGraphics()
   {
     Image r = realImage;
     Graphics g = null;
     if (r != null)
       g = r.getGraphics(); // Should we return some dummy graphics instead?
     return g;
   }
 
   public int getHeight(ImageObserver observer)
   {
-    synchronized (observers)
+    if (observer != null)
       {
-        observers.add(observer);
+        synchronized (observers)
+          {
+            observers.add(observer);
+          }
       }
     int height = 0;
     Image r = realImage;
     if (r != null)
       height = r.getHeight(observer);
     return height;
   }
 
   public Object getProperty(String name, ImageObserver observer)
   {
-    synchronized (observers)
+    if (observer != null)
       {
-        observers.add(observer);
+        synchronized (observers)
+          {
+            observers.add(observer);
+          }
       }
     Image r = realImage;
     Object prop = null;
     if (r != null)
       prop = r.getProperty(name, observer);
     return prop;
   }
 
   public ImageProducer getSource()
   {
     Image r = realImage;
     ImageProducer source;
     if (r == null)
       source = new NullImageSource();
     else
       source = r.getSource();
     return source;
   }
 
   public int getWidth(ImageObserver observer)
   {
-    synchronized (observers)
+    if (observer != null)
       {
-        observers.add(observer);
+        synchronized (observers)
+          {
+            observers.add(observer);
+          }
       }
     int width = 0;
     Image r = realImage;
     if (r != null)
       width = r.getWidth(observer);
     return width;
   }
 
   void addObserver(ImageObserver obs)
   {
-    if (realImage != null && ! observers.contains(obs))
+    if (obs != null)
       {
-        obs.imageUpdate(this, ImageObserver.WIDTH | ImageObserver.HEIGHT
-                        |ImageObserver.ALLBITS | ImageObserver.PROPERTIES,
-                        0, 0, realImage.getWidth(null),
-                        realImage.getHeight(null));
-      }
-    synchronized (observers)
-      {
-        observers.add(obs);
+        if (realImage != null && ! observers.contains(obs))
+          {
+            obs.imageUpdate(this, ImageObserver.WIDTH | ImageObserver.HEIGHT
+                            |ImageObserver.ALLBITS | ImageObserver.PROPERTIES,
+                            0, 0, realImage.getWidth(null),
+                            realImage.getHeight(null));
+          }
+        synchronized (observers)
+        {
+          observers.add(obs);
+        }
       }
   }
 
   static Image realImage(Image img, ImageObserver obs)
   {
     if (img instanceof AsyncImage)
       {
         ((AsyncImage) img).addObserver(obs);
         Image r = ((AsyncImage) img).realImage;
         if (r != null)
           img = r;
       }
     return img;
   }
 

Reply via email to