MINOR: ist: Add `struct ist istdup(const struct ist)`
istdup() performs the equivalent of strdup() on a `struct ist`.
diff --git a/include/common/ist.h b/include/common/ist.h
index db31544..b19facd 100644
--- a/include/common/ist.h
+++ b/include/common/ist.h
@@ -756,6 +756,27 @@
free(ist->ptr);
*ist = IST_NULL;
}
+
+/* This function performs the equivalent of strdup() on the given <src>.
+ *
+ * If this function fails to allocate memory the return value is equivalent
+ * to IST_NULL.
+ */
+static inline struct ist istdup(const struct ist src)
+{
+ const size_t src_size = src.len;
+
+ /* Allocate at least 1 byte to allow duplicating an empty string with
+ * malloc implementations that return NULL for a 0-size allocation.
+ */
+ struct ist dst = istalloc(MAX(src_size, 1));
+
+ if (isttest(dst)) {
+ istcpy(&dst, src, src_size);
+ }
+
+ return dst;
+}
#endif
#endif