From 8ddc32629a6d6be77256694c9e322dde134609f3 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Tue, 12 Aug 2014 16:24:19 +0000 Subject: mem: add av_strndup() for duplicating substrings --- libavutil/mem.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'libavutil/mem.c') diff --git a/libavutil/mem.c b/libavutil/mem.c index be42342de2..b7bb65c139 100644 --- a/libavutil/mem.c +++ b/libavutil/mem.c @@ -222,6 +222,26 @@ char *av_strdup(const char *s) return ptr; } +char *av_strndup(const char *s, size_t len) +{ + char *ret = NULL, *end; + + if (!s) + return NULL; + + end = memchr(s, 0, len); + if (end) + len = end - s; + + ret = av_realloc(NULL, len + 1); + if (!ret) + return NULL; + + memcpy(ret, s, len); + ret[len] = 0; + return ret; +} + static void fill16(uint8_t *dst, int len) { uint32_t v = AV_RN16(dst - 2); -- cgit v1.2.3