* solib.c (solib_open): Handle the case where
authorKevin Buettner <kevinb@redhat.com>
Tue, 21 Nov 2000 09:23:32 +0000 (09:23 +0000)
committerKevin Buettner <kevinb@redhat.com>
Tue, 21 Nov 2000 09:23:32 +0000 (09:23 +0000)
solib_absolute_prefix is NULL.

gdb/ChangeLog
gdb/solib.c

index 491bc53a55cfa89904ba683498452329330c2e8a..cd38b9542090870b4b98a61ddecfef5def2f37d3 100644 (file)
@@ -1,3 +1,8 @@
+2000-11-21  Kevin Buettner  <kevinb@redhat.com>
+
+       * solib.c (solib_open): Handle the case where
+       solib_absolute_prefix is NULL.
+
 2000-11-20  Michael Snyder  <msnyder@cleaver.cygnus.com>
 
        * solist.h: Declare new function solib_open.
index 5c982e2a90dd78b172d52e5e541f69183a28c7e8..288a54a4a91db67b9076e3a2bc1e0e005143e136 100644 (file)
@@ -100,21 +100,25 @@ solib_open (char *in_pathname, char **found_pathname)
   int found_file = -1;
   char *temp_pathname = NULL;
 
-  if (solib_absolute_prefix != NULL &&
-      ROOTED_P (in_pathname))
+  if (ROOTED_P (in_pathname))
     {
-      int  prefix_len = strlen (solib_absolute_prefix);
+      if (solib_absolute_prefix == NULL)
+        temp_pathname = in_pathname;
+      else
+       {
+         int  prefix_len = strlen (solib_absolute_prefix);
 
-      /* Remove trailing slashes from absolute prefix.  */
-      while (prefix_len > 0 && SLASH_P (solib_absolute_prefix[prefix_len - 1]))
-       prefix_len--;
+         /* Remove trailing slashes from absolute prefix.  */
+         while (prefix_len > 0 && SLASH_P (solib_absolute_prefix[prefix_len - 1]))
+           prefix_len--;
 
-      /* Cat the prefixed pathname together.  */
-      temp_pathname = alloca (prefix_len + strlen (in_pathname) + 1);
-      strncpy (temp_pathname, solib_absolute_prefix, prefix_len);
-      temp_pathname[prefix_len] = '\0';
-      strcat (temp_pathname, in_pathname);
+         /* Cat the prefixed pathname together.  */
+         temp_pathname = alloca (prefix_len + strlen (in_pathname) + 1);
+         strncpy (temp_pathname, solib_absolute_prefix, prefix_len);
+         temp_pathname[prefix_len] = '\0';
+         strcat (temp_pathname, in_pathname);
 
+       }
       /* Now see if we can open it.  */
       found_file = open (temp_pathname, O_RDONLY, 0);
     }
@@ -137,7 +141,7 @@ solib_open (char *in_pathname, char **found_pathname)
 
   /* Done.  If not found, tough luck.  Return found_file and 
      (optionally) found_pathname.  */
-  if (found_pathname != NULL)
+  if (found_pathname != NULL && temp_pathname != NULL)
     *found_pathname = strsave (temp_pathname);
   return found_file;
 }