Correct pointer comparisons relying on NULL less than any other pointer.
authorAlan Modra <amodra@gmail.com>
Tue, 20 Jun 2000 12:33:21 +0000 (12:33 +0000)
committerAlan Modra <amodra@gmail.com>
Tue, 20 Jun 2000 12:33:21 +0000 (12:33 +0000)
Alexander Aganichev's fix for ieee.c

bfd/ChangeLog
bfd/archive.c
binutils/ChangeLog
binutils/ar.c
binutils/bucomm.c
binutils/ieee.c
gprof/ChangeLog
gprof/source.c
ld/ChangeLog
ld/ldmain.c

index 2e2b187..30512d1 100644 (file)
@@ -1,3 +1,10 @@
+2000-06-20  Alan Modra  <alan@linuxcare.com.au>
+
+       * archive.c (normalize): Correct pointer comparison when checking
+       for backslashes.
+       (bfd_bsd_truncate_arname): Likewise.
+       (bfd_gnu_truncate_arname): Likewise.
+
 2000-06-20  Ulf Carlsson  <ulfc@engr.sgi.com>
 
        * elf-bfd.h (struct elf_obj_tdata): Define per BFD Irix 5 virtual
index 5709f26..6fe5997 100644 (file)
@@ -1188,7 +1188,7 @@ normalize (abfd, file)
   {
     /* We could have foo/bar\\baz, or foo\\bar, or d:bar.  */
     char *bslash = strrchr (file, '\\');
-    if (bslash > filename)
+    if (filename == NULL || (bslash != NULL && bslash > filename))
       filename = bslash;
     if (filename == NULL && file[0] != '\0' && file[1] == ':')
       filename = file + 1;
@@ -1581,7 +1581,7 @@ bfd_bsd_truncate_arname (abfd, pathname, arhdr)
   {
     /* We could have foo/bar\\baz, or foo\\bar, or d:bar.  */
     char *bslash = strrchr (pathname, '\\');
-    if (bslash > filename)
+    if (filename == NULL || (bslash != NULL && bslash > filename))
       filename = bslash;
     if (filename == NULL && pathname[0] != '\0' && pathname[1] == ':')
       filename = pathname + 1;
@@ -1632,7 +1632,7 @@ bfd_gnu_truncate_arname (abfd, pathname, arhdr)
   {
     /* We could have foo/bar\\baz, or foo\\bar, or d:bar.  */
     char *bslash = strrchr (pathname, '\\');
-    if (bslash > filename)
+    if (filename == NULL || (bslash != NULL && bslash > filename))
       filename = bslash;
     if (filename == NULL && pathname[0] != '\0' && pathname[1] == ':')
       filename = pathname + 1;
index 6bb13ff..ce7c8f5 100644 (file)
@@ -1,3 +1,14 @@
+2000-06-20  Alexander Aganichev <AAganichev@hypercom.com>
+
+       * ar.c (normalize): Correct pointer comparison when checking for
+       backslashes.
+       (main): Likewise.
+       * bucomm.c (make_tempname): Likewise.
+
+       * ieee.c (ieee_start_compilation_unit): Correct pointer comparison
+       and search for backslashes in the original pathname.
+       (ieee_add_bb11): Likewise.
+
 2000-06-18  Nick Clifton  <nickc@redhat.com>
 
        * ar.c (print_contents): Improve verbose message.
index cc8b77a..650092f 100644 (file)
@@ -307,10 +307,10 @@ normalize (file, abfd)
   {
     /* We could have foo/bar\\baz, or foo\\bar, or d:bar.  */
     char *bslash = strrchr (file, '\\');
-    if (bslash > filename)
+    if (filename == NULL || (bslash != NULL && bslash > filename))
       filename = bslash;
     if (filename == NULL && file[0] != '\0' && file[1] == ':')
-       filename = file + 1;
+      filename = file + 1;
   }
 #endif
   if (filename != (char *) NULL)
@@ -392,7 +392,7 @@ main (argc, argv)
        {
          /* We could have foo/bar\\baz, or foo\\bar, or d:bar.  */
          char *bslash = strrchr (program_name, '\\');
-         if (bslash > temp)
+         if (temp == NULL || (bslash != NULL && bslash > temp))
            temp = bslash;
          if (temp == NULL && program_name[0] != '\0' && program_name[1] == ':')
            temp = program_name + 1;
index 76ffa60..86c327f 100644 (file)
@@ -219,7 +219,7 @@ make_tempname (filename)
   {
     /* We could have foo/bar\\baz, or foo\\bar, or d:bar.  */
     char *bslash = strrchr (filename, '\\');
-    if (bslash > slash)
+    if (slash == NULL || (bslash != NULL && bslash > slash))
       slash = bslash;
     if (slash == NULL && filename[0] != '\0' && filename[1] == ':')
       slash = filename + 1;
index 27409cc..44dd64f 100644 (file)
@@ -4940,8 +4940,8 @@ ieee_start_compilation_unit (p, filename)
   info->filename = filename;
   modname = strrchr (filename, '/');
   /* We could have a mixed forward/back slash case.  */
-  backslash = strrchr (modname, '\\');
-  if (backslash > modname)
+  backslash = strrchr (filename, '\\');
+  if (modname == NULL || (backslash != NULL && backslash > modname))
     modname = backslash;
 
   if (modname != NULL)
@@ -5206,8 +5206,8 @@ ieee_add_bb11 (info, sec, low, high)
       /* Start the enclosing BB10 block.  */
       filename = bfd_get_filename (info->abfd);
       modname = strrchr (filename, '/');
-      backslash = strrchr (modname, '\\');
-      if (backslash > modname)
+      backslash = strrchr (filename, '\\');
+      if (modname == NULL || (backslash != NULL && backslash > modname))
        modname = backslash;
 
       if (modname != NULL)
index deec805..400c834 100644 (file)
@@ -1,3 +1,8 @@
+2000-06-20  Alan Modra  <alan@linuxcare.com.au>
+
+       * source.c (annotate_source): Correct pointer comparison when
+       checking for backslashes.
+
 2000-06-13  H.J. Lu  <hjl@gnu.org>
 
        * configure: Regenerate.
index 039e876..dd671d5 100644 (file)
@@ -116,7 +116,7 @@ DEFUN (annotate_source, (sf, max_width, annote, arg),
 #ifdef HAVE_DOS_BASED_FILE_SYSTEM
          {
            char *bslash = strrchr (sf->name, '\\');
-           if (bslash > name_only)
+           if (name_only == NULL || (bslash != NULL && bslash > name_only))
              name_only = bslash;
            if (name_only == NULL && sf->name[0] != '\0' && sf->name[1] == ':')
              name_only = (char *)sf->name + 1;
@@ -174,7 +174,7 @@ DEFUN (annotate_source, (sf, max_width, annote, arg),
 #ifdef HAVE_DOS_BASED_FILE_SYSTEM
        {
          char *bslash = strrchr (sf->name, '\\');
-         if (bslash > filename)
+         if (filename == NULL || (bslash != NULL && bslash > filename))
            filename = bslash;
          if (filename == NULL && sf->name[0] != '\0' && sf->name[1] == ':')
            filename = sf->name + 1;
index 130c8dd..cc5df52 100644 (file)
@@ -1,3 +1,8 @@
+2000-06-20  Alan Modra  <alan@linuxcare.com.au>
+
+       * ldmain.c (set_scripts_dir): Correct pointer comparison when
+       checking for backslashes.
+
 2000-06-19  Alan Modra  <alan@linuxcare.com.au>
 
        * NEWS: Move entries not in 2.10 above "Changes in version 2.10".
index 9cb55ed..660ea94 100644 (file)
@@ -575,7 +575,7 @@ set_scripts_dir ()
   {
     /* We could have \foo\bar, or /foo\bar.  */
     char *bslash = strrchr (program_name, '\\');
-    if (bslash > end)
+    if (end == NULL || (bslash != NULL && bslash > end))
       end = bslash;
   }
 #endif