aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohannes Schindelin <johannes.schindelin@gmx.de>2024-07-13 21:08:19 +0000
committerJunio C Hamano <gitster@pobox.com>2024-07-13 16:23:36 -0700
commitce68178a0ae222b71fe5f89f05dc7113267c079b (patch)
tree375b67d03cd841b318b06e9cce2894d72329d931
parent0593c1ea30737cf2d61f7c191d3687b37badf3be (diff)
downloadgit-ce68178a0ae222b71fe5f89f05dc7113267c079b.tar.gz
strvec: declare the `strvec_push_nodup()` function globally
This function differs from `strvec_push()` in that it takes ownership of the allocated string that is passed as second argument. This is useful when appending elements to the string array that have been freshly allocated and serve no further other purpose after that. Without declaring this function globally, call sites would allocate the memory, only to have `strvec_push()` duplicate the string, and then the first copy would need to be released. Having this function globally avoids that kind of unnecessary work. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--strvec.c2
-rw-r--r--strvec.h3
2 files changed, 4 insertions, 1 deletions
diff --git a/strvec.c b/strvec.c
index d4073ec9fa..f712070f57 100644
--- a/strvec.c
+++ b/strvec.c
@@ -10,7 +10,7 @@ void strvec_init(struct strvec *array)
memcpy(array, &blank, sizeof(*array));
}
-static void strvec_push_nodup(struct strvec *array, const char *value)
+void strvec_push_nodup(struct strvec *array, char *value)
{
if (array->v == empty_strvec)
array->v = NULL;
diff --git a/strvec.h b/strvec.h
index 6c7e8b7d50..4b73c1f092 100644
--- a/strvec.h
+++ b/strvec.h
@@ -46,6 +46,9 @@ void strvec_init(struct strvec *);
/* Push a copy of a string onto the end of the array. */
const char *strvec_push(struct strvec *, const char *);
+/* Push an allocated string onto the end of the array, taking ownership. */
+void strvec_push_nodup(struct strvec *array, char *value);
+
/**
* Format a string and push it onto the end of the array. This is a
* convenience wrapper combining `strbuf_addf` and `strvec_push`.