OSDN Git Service

Merge branch 'master' of git://github.com/monaka/binutils
[pf3gnuchains/pf3gnuchains3x.git] / libiberty / strdup.c
index a01cedf..78c2093 100644 (file)
@@ -3,19 +3,25 @@
 @deftypefn Supplemental char* strdup (const char *@var{s})
 
 Returns a pointer to a copy of @var{s} in memory obtained from
-@code{malloc}, or NULL if insufficient memory was available.
+@code{malloc}, or @code{NULL} if insufficient memory was available.
 
 @end deftypefn
 
 */
 
+#include <ansidecl.h>
+#include <stddef.h>
+
+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);
 }