diff options
Diffstat (limited to 'libavutil/mem.c')
-rw-r--r-- | libavutil/mem.c | 20 |
1 files changed, 20 insertions, 0 deletions
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); |