aboutsummaryrefslogtreecommitdiff
path: root/lib/xwrap.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/xwrap.c')
-rw-r--r--lib/xwrap.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/xwrap.c b/lib/xwrap.c
index a20d4b6b..65e3018d 100644
--- a/lib/xwrap.c
+++ b/lib/xwrap.c
@@ -21,9 +21,9 @@ void xstrncpy(char *dest, char *src, size_t size)
void xstrncat(char *dest, char *src, size_t size)
{
- long len = strlen(src);
+ long len = strlen(dest);
- if (len+strlen(dest)+1 > size)
+ if (len+strlen(src)+1 > size)
error_exit("'%s%s' > %ld bytes", dest, src, (long)size);
strcpy(dest+len, src);
}
@@ -80,6 +80,14 @@ char *xstrdup(char *s)
return xstrndup(s, strlen(s));
}
+void *xmemdup(void *s, long len)
+{
+ void *ret = xmalloc(len);
+ memcpy(ret, s, len);
+
+ return ret;
+}
+
// Die unless we can allocate enough space to sprintf() into.
char *xmprintf(char *format, ...)
{