[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