X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=libiberty%2Fstrdup.c;h=78c2093b61a3d05c758c9c14814ef38eb468633b;hb=1d942ae90810156b9875ea3e11754ab447c748db;hp=1785b34f2745a1e43d61cf42bbec1862506dd2fb;hpb=dc9e099fc0eced486ae2b49455c9da113c11f4ff;p=deliverable%2Fbinutils-gdb.git diff --git a/libiberty/strdup.c b/libiberty/strdup.c index 1785b34f27..78c2093b61 100644 --- a/libiberty/strdup.c +++ b/libiberty/strdup.c @@ -1,10 +1,27 @@ +/* + +@deftypefn Supplemental char* strdup (const char *@var{s}) + +Returns a pointer to a copy of @var{s} in memory obtained from +@code{malloc}, or @code{NULL} if insufficient memory was available. + +@end deftypefn + +*/ + +#include +#include + +extern size_t strlen (const char*); +extern PTR malloc (size_t); +extern PTR memcpy (PTR, const PTR, size_t); + char * -strdup(s) - char *s; +strdup(const char *s) { - char *result = (char*)malloc(strlen(s) + 1); - if (result == (char*)0) - return (char*)0; - strcpy(result, s); - return result; + size_t len = strlen (s) + 1; + char *result = (char*) malloc (len); + if (result == (char*) 0) + return (char*) 0; + return (char*) memcpy (result, s, len); }