I've applied this patch to fix issue 51297. Solaris' bsearch blows up with a NULL array. I also noticed the possibility of passing NULL pointers to memcpy, so took the opportunity of fixing that too. Thanks to Eric for verifying the fix is good.

nathan
2011-11-26  Nathan Sidwell  <nat...@acm.org>

        PR gcov-profile/51297
        * gcov.c (main): Allocate initial names and sources arrays.
        (find_source): Don't check for null name or source arrays here.

Index: gcov.c
===================================================================
--- gcov.c      (revision 181744)
+++ gcov.c      (working copy)
@@ -406,6 +406,11 @@ main (int argc, char **argv)
   /* Handle response files.  */
   expandargv (&argc, &argv);
 
+  a_names = 10;
+  names = XNEWVEC (name_map_t, a_names);
+  a_sources = 10;
+  sources = XNEWVEC (source_t, a_sources);
+  
   argno = process_args (argc, argv);
   if (optind == argc)
     print_usage (true);
@@ -874,8 +879,6 @@ find_source (const char *file_name)
     {
       /* Extend the name map array -- we'll be inserting one or two
         entries.  */
-      if (!a_names)
-       a_names = 10;
       a_names *= 2;
       name_map = XNEWVEC (name_map_t, a_names);
       memcpy (name_map, names, n_names * sizeof (*names));
@@ -894,8 +897,6 @@ find_source (const char *file_name)
       
       if (n_sources == a_sources)
        {
-         if (!a_sources)
-           a_sources = 10;
          a_sources *= 2;
          src = XNEWVEC (source_t, a_sources);
          memcpy (src, sources, n_sources * sizeof (*sources));

Reply via email to