VMClassLoader.java (init): Check classpath entry before passing to URL constructor.
authorBryce McKinlay <mckinlay@redhat.com>
Mon, 5 Jul 2004 23:18:14 +0000 (23:18 +0000)
committerBryce McKinlay <bryce@gcc.gnu.org>
Mon, 5 Jul 2004 23:18:14 +0000 (00:18 +0100)
2004-07-05  Bryce McKinlay  <mckinlay@redhat.com>

* gnu/gcj/runtime/VMClassLoader.java (init): Check classpath entry
before passing to URL constructor. Rethrow any MalformedURLException
as a RuntimeException. Catch MalformedURLException specifically, not
all exceptions.

From-SVN: r84138

libjava/ChangeLog
libjava/gnu/gcj/runtime/VMClassLoader.java

index 1a3822d1d515c7113f94ed28c53af058a8f74882..4cff650aac7e473c9f4534d18cd6cacf14d70674 100644 (file)
@@ -1,3 +1,10 @@
+2004-07-05  Bryce McKinlay  <mckinlay@redhat.com>
+
+       * gnu/gcj/runtime/VMClassLoader.java (init): Check classpath entry
+       before passing to URL constructor. Rethrow any MalformedURLException
+       as a RuntimeException. Catch MalformedURLException specifically, not
+       all exceptions.
+       
 2004-07-05  Bryce McKinlay  <mckinlay@redhat.com>
 
        * java/util/Locale.java (readObject): Intern strings read from object
index 5e7f4c8ea906222c042b01425bf8ed53f126da9b..1fc7081bb784dea875d45d0def53063ffcbb5ce3 100644 (file)
@@ -47,58 +47,58 @@ public final class VMClassLoader extends java.net.URLClassLoader
        String e = st.nextToken ();
        try
          {
-           if (!e.endsWith (File.separator) && new File (e).isDirectory ())
+           File path = new File(e);
+           // Ignore invalid paths.
+           if (!path.exists())
+             continue;
+           if (!e.endsWith (File.separator) && path.isDirectory ())
              addURL(new URL("file", "", -1, e + File.separator));
            else
              addURL(new URL("file", "", -1, e));
          } 
        catch (java.net.MalformedURLException x)
          {
-           /* Ignore this path element */
+           // This should never happen.
+           throw new RuntimeException(x);
          }
       }
 
     // Add the contents of the extensions directories.  
     st = new StringTokenizer (System.getProperty ("java.ext.dirs"),
                              System.getProperty ("path.separator", ":"));
-    while (st.hasMoreElements ())
+
+    try
       {
-       String dirname = st.nextToken ();
-       try
+       while (st.hasMoreElements ())
          {
+           String dirname = st.nextToken ();
            File dir = new File (dirname);
             if (dir.exists ())
             {
               if (! dirname.endsWith (File.separator))
-                  dirname = dirname + File.separator;
+                 dirname = dirname + File.separator;
               String files[] 
-                = dir.list (new FilenameFilter ()
+               = dir.list (new FilenameFilter ()
                             { 
                               public boolean accept (File dir, String name)
                               {
-                                return (name.endsWith (".jar") 
-                                        || name.endsWith (".zip"));
+                               return (name.endsWith (".jar") 
+                                       || name.endsWith (".zip"));
                               }
                             });
               for (int i = files.length - 1; i >= 0; i--)
-                addURL(new URL("file", "", -1, dirname + files[i]));
+               addURL(new URL("file", "", -1, dirname + files[i]));
             }
          }
-       catch (Exception x)
-         {
-           // Just ignore any badness.  
-         }
-      }
 
-    // Add core:/ to the end of the java.class.path so any resources
-    // compiled into this executable may be found.
-    try
-      {
+       // Add core:/ to the end of the java.class.path so any resources
+       // compiled into this executable may be found.
        addURL(new URL("core", "", -1, "/"));
       }
     catch (java.net.MalformedURLException x)
       {
        // This should never happen.
+       throw new RuntimeException(x);
       }
   }