From 704b4df7d1965090d27e76eba9257e2a29b34595 Mon Sep 17 00:00:00 2001 From: Maximilian Downey Twiss <creatorsmithmdt@gmail.com> Date: Thu, 24 Nov 2022 19:01:56 +1100 Subject: [PATCH 40/56] java: Fix Wstringop-* warnings.
gcc/java/ChangeLog: * jcf-parse.cc (compute_class_name): Fix Wstringop-* warnings. Co-authored-by: 277r <rick_degraaf@hotmail.nl> --- gcc/java/jcf-parse.cc | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/gcc/java/jcf-parse.cc b/gcc/java/jcf-parse.cc index 683f7211085..a4ee9af51d2 100644 --- a/gcc/java/jcf-parse.cc +++ b/gcc/java/jcf-parse.cc @@ -1992,8 +1992,8 @@ compute_class_name (struct ZipDirectory *zdir) { char *class_name_in_zip_dir = ZIPDIR_FILENAME (zdir); char *class_name; - int i; - int filename_length = zdir->filename_length; + size_t i; + size_t filename_length = zdir->filename_length; while (filename_length > 2 && strncmp (class_name_in_zip_dir, "./", 2) == 0) { @@ -2002,15 +2002,20 @@ compute_class_name (struct ZipDirectory *zdir) } filename_length -= strlen (".class"); - class_name = XNEWVEC (char, filename_length + 1); - memcpy (class_name, class_name_in_zip_dir, filename_length); - class_name [filename_length] = '\0'; + if (filename_length > 0) + { + class_name = XNEWVEC (char, size_t(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] = '.'; + for (i = 0; i < filename_length; i++) + if (class_name[i] == '/') + class_name[i] = '.'; - return class_name; + return class_name; + } + + return 0; } /* Return 0 if we should skip this entry, 1 if it is a .class file, 2 -- 2.38.1