New function xmemdup0().
authorBen Pfaff <blp@nicira.com>
Thu, 10 Jul 2008 17:45:05 +0000 (10:45 -0700)
committerBen Pfaff <blp@nicira.com>
Fri, 18 Jul 2008 20:42:37 +0000 (13:42 -0700)
include/util.h
lib/util.c

index 8b0bb4025a884998eebc708b89115aba371a9a2e..99319d4cf64b0ded5ac2b992c25901a6c7fd6bb6 100644 (file)
@@ -81,6 +81,7 @@ void *xmalloc(size_t);
 void *xcalloc(size_t, size_t);
 void *xrealloc(void *, size_t);
 void *xmemdup(const void *, size_t);
+char *xmemdup0(const char *, size_t);
 char *xstrdup(const char *);
 char *xasprintf(const char *format, ...) PRINTF_FORMAT(1, 2);
 
index 04fcd90d8755597c192aa08b89c836fa49805a4c..230a2470425db0917d823b6a2ac468a594f1163e 100644 (file)
@@ -83,10 +83,19 @@ xmemdup(const void *p_, size_t size)
     return p;
 }
 
+char *
+xmemdup0(const char *p_, size_t length)
+{
+    char *p = xmalloc(length + 1);
+    memcpy(p, p_, length);
+    p[length] = '\0';
+    return p;
+}
+
 char *
 xstrdup(const char *s) 
 {
-    return xmemdup(s, strlen(s) + 1);
+    return xmemdup0(s, strlen(s));
 }
 
 char *