> Kaffe invoked with -jar option failes if the environment variable
                                 fails
> CLASSPATH is set.  Please see the following test case.

How about this?

--- kaffe/kaffe/main.c.orig     Tue May 31 06:16:02 2005
+++ kaffe/kaffe/main.c  Tue Jun  7 13:00:52 2005
@@ -130,6 +130,17 @@
                }
 #endif
        }
+       /* classpath may be changed later, so we copy it to a newly allocated
+          area so that the memory can be freed. */
+       if (cp != NULL) {
+               char* newcp;
+               if ((newcp = malloc(strlen(cp) + 1)) == NULL) {
+                       fprintf(stderr,  _("Error: out of memory.\n"));
+                       exit(1);
+               }
+               strcpy(newcp, cp);
+               cp = newcp;
+       }
        vmargs.classpath = cp;
 
         cp = getenv(LIBRARYPATH1);
@@ -499,15 +510,17 @@
                                + strlen(argv[i])
                                + 1;
 
-                       /* Get longer buffer FIXME:  free the old one */
+                       /* Get longer buffer */
                        if ((newcpath = malloc(cpathlength)) == NULL) {
                                fprintf(stderr,  _("Error: out of memory.\n"));
                                exit(1);
                        }
 
                        /* Construct new classpath */
-                       if( vmargs.classpath != 0 )
+                       if( vmargs.classpath != 0 ) {
                                strcpy(newcpath, vmargs.classpath);
+                               free(vmargs.classpath);
+                       }
                        else
                                newcpath[0] = '\0';
                        strcat(newcpath, path_separator);

_______________________________________________
kaffe mailing list
kaffe@kaffe.org
http://kaffe.org/cgi-bin/mailman/listinfo/kaffe

Reply via email to