git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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);
 }
 
Previous: Jeff KingNext: Jeff King
Message 9 of 19 in “blame.c: fix garbled error message”
  1. blame.c: fix garbled error messageLukas Fleischer, Jan 10, 2015
  2. Junio C HamanoJan 12, 2015
  3. Jeff KingJan 12, 2015
  4. Junio C HamanoJan 12, 2015
  5. Jeff KingJan 12, 2015
  6. Junio C HamanoJan 13, 2015
  7. Jeff KingJan 13, 2015
  8. 1/5 git-compat-util: add xstrdup_or_null helperJeff King, Jan 13, 2015
  9. Jonathan NiederJan 13, 2015
  10. Jeff KingJan 13, 2015
  11. 2/5 builtin/apply.c: use xstrdup_or_null instead of null_strdupJeff King, Jan 13, 2015
  12. 3/5 builtin/commit.c: use xstrdup_or_null instead of envdupJeff King, Jan 13, 2015
  13. 4/5 use xstrdup_or_null to replace ternary conditionalsJeff King, Jan 13, 2015
  14. 5/5 blame.c: fix garbled error messageJeff King, Jan 13, 2015
  15. Lukas FleischerJan 14, 2015
  16. Junio C HamanoJan 14, 2015
  17. Jeff KingJan 14, 2015
  18. Junio C HamanoJan 14, 2015
  19. Lukas FleischerJan 12, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.