Re: [PATCH 1/5] git-compat-util: add xstrdup_or_null helper
- From
Jonathan Nieder <jrnieder@gmail.com>
- Date
- Jan 13, 2015, 02:21 UTC
- Message-ID
- <20150113022119.GA29365@google.com>
- In-Reply-To
- <20150113015736.GA18986@peff.net>
Jeff King wrote:
Show 10 quoted lines
> --- a/git-compat-util.h
> +++ b/git-compat-util.h
> @@ -675,6 +675,11 @@ extern char *xgetcwd(void);
>
> #define REALLOC_ARRAY(x, alloc) (x) = xrealloc((x), (alloc) * sizeof(*(x)))
>
> +static inline char *xstrdup_or_null(const char *str)
> +{
> + return str ? xstrdup(str) : NULL;
> +}Would it make sense for xstrdup to always include the NULL check, avoiding the need for the more verbose xstrdup_or_null?
Jonathan
diff --git i/wrapper.c w/wrapper.c index 007ec0d..5a835e8 100644 --- i/wrapper.c +++ w/wrapper.c @@ -40,7 +40,11 @@ try_to_free_t set_try_to_free_routine(try_to_free_t routine) char *xstrdup(const char *str) { - char *ret = strdup(str); + char *ret; + + if (!str) + return NULL; + ret = strdup(str); if (!ret) { try_to_free_routine(strlen(str) + 1); ret = strdup(str); @@ -125,7 +129,11 @@ void *xmemdupz(const void *data, size_t len) char *xstrndup(const char *str, size_t len) { - char *p = memchr(str, '\0', len); + char *p; + + if (!str) + return NULL; + p = memchr(str, '\0', len); return xmemdupz(str, p ? p - str : len); }