From 14f3f501bc1abc821d859e964f71e69b8ed7eaa2 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Sun, 24 May 2009 18:31:18 +0000 Subject: Found this change in an old CVS workspace: rewrite savestring() to the more standard xstrndup(). --- misc.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'misc.c') diff --git a/misc.c b/misc.c index fd5e558..6bd8208 100644 --- a/misc.c +++ b/misc.c @@ -388,13 +388,21 @@ xstrdup (const char *ptr) #endif /* HAVE_DMALLOC_H */ char * -savestring (const char *str, unsigned int length) +xstrndup (const char *str, unsigned int length) { - char *out = xmalloc (length + 1); - if (length > 0) - memcpy (out, str, length); - out[length] = '\0'; - return out; + char *result; + +#ifdef HAVE_STRNDUP + result = strndup (str, length); + if (result == 0) + fatal (NILF, _("virtual memory exhausted")); +#else + result = xmalloc (length + 1); + strncpy (result, str, length); + result[length] = '\0'; +#endif + + return result; } -- cgit v1.2.3