[Bug java/17733] class read for the second time

Andrew Haley aph@redhat.com
Thu Sep 30 17:41:00 GMT 2004


We get confused if pathnames in a .jar archive begin with "./".

Andrew.


2004-09-30  Andrew Haley  <aph@redhat.com>

	PR java/17733
	* jcf-parse.c (compute_class_name): Rewrite.

Index: jcf-parse.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/java/jcf-parse.c,v
retrieving revision 1.172
diff -p -2 -c -r1.172 jcf-parse.c
*** jcf-parse.c	28 Sep 2004 17:40:56 -0000	1.172
--- jcf-parse.c	30 Sep 2004 16:34:17 -0000
*************** compute_class_name (struct ZipDirectory 
*** 1172,1182 ****
    char *class_name_in_zip_dir = ZIPDIR_FILENAME (zdir);
    char *class_name;
!   int j;
  
-   class_name = ALLOC (zdir->filename_length + 1 - 6);
-   strncpy (class_name, class_name_in_zip_dir, zdir->filename_length - 6);
-   class_name [zdir->filename_length - 6] = '\0';
-   for (j = 0; class_name[j]; ++j)
-     class_name[j] = class_name[j] == '/' ? '.' : class_name[j];
    return class_name;
  }
--- 1172,1191 ----
    char *class_name_in_zip_dir = ZIPDIR_FILENAME (zdir);
    char *class_name;
!   int i;
!   int filename_length;
! 
!   while (strncmp (class_name_in_zip_dir, "./", 2) == 0)
!     class_name_in_zip_dir += 2;
! 
!   filename_length = (strlen (class_name_in_zip_dir)
! 		     - strlen (".class"));
!   class_name = ALLOC (filename_length + 1);
!   memcpy (class_name, class_name_in_zip_dir, filename_length);
!   class_name [filename_length] = '\0';
! 
!   for (i = 0; i < filename_length; i++)
!     if (class_name[i] == '/')
!       class_name[i] = '.';
  
    return class_name;
  }



More information about the Gcc-patches mailing list