]> Pileus Git - ~andy/fetchmail/blobdiff - xmalloc.c
Credit John Beck's fixes.
[~andy/fetchmail] / xmalloc.c
index c5af357c0f9193e2fce47d7b846daacb4e7b330b..c2ca4a66e932a32d99716d851914b13ca05da6f0 100644 (file)
--- a/xmalloc.c
+++ b/xmalloc.c
@@ -31,7 +31,7 @@ xmalloc (size_t n)
     if (p == (XMALLOCTYPE *) 0)
     {
        report(stderr, GT_("malloc failed\n"));
-       exit(PS_UNDEFINED);
+       abort();
     }
     return(p);
 }
@@ -45,7 +45,7 @@ xrealloc (XMALLOCTYPE *p, size_t n)
     if (p == (XMALLOCTYPE *) 0)
     {
        report(stderr, GT_("realloc failed\n"));
-       exit(PS_UNDEFINED);
+       abort();
     }
     return p;
 }
@@ -63,9 +63,22 @@ char *strdup(const char *s)
 {
     char *p;
     p = (char *) malloc(strlen(s)+1);
-    strcpy(p,s);
+    if (p)
+           strcpy(p,s);
     return p;
 }
 #endif /* !HAVE_STRDUP */
 
+char *xstrndup(const char *s, size_t len)
+{
+    char *p;
+    size_t l = strlen(s);
+
+    if (len < l) l = len;
+    p = (char *)xmalloc(l + 1);
+    memcpy(p, s, l);
+    p[l] = '\0';
+    return p;
+}
+
 /* xmalloc.c ends here */