summaryrefslogtreecommitdiff
path: root/gdb/solib.c
diff options
context:
space:
mode:
authorKevin Buettner <kevinb@redhat.com>2000-11-21 09:23:32 +0000
committerKevin Buettner <kevinb@redhat.com>2000-11-21 09:23:32 +0000
commit06b6468d7df183737e9b137142d1e6e1f23f3fc2 (patch)
tree4acef4875da42bc95571d85b6d901502be6b53c1 /gdb/solib.c
parent831d560da225dcb4414bebcab1d126255f2cfd20 (diff)
downloadgdb-06b6468d7df183737e9b137142d1e6e1f23f3fc2.tar.gz
* solib.c (solib_open): Handle the case where
solib_absolute_prefix is NULL.
Diffstat (limited to 'gdb/solib.c')
-rw-r--r--gdb/solib.c28
1 files changed, 16 insertions, 12 deletions
diff --git a/gdb/solib.c b/gdb/solib.c
index 5c982e2a90d..288a54a4a91 100644
--- a/gdb/solib.c
+++ b/gdb/solib.c
@@ -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;
}