Merge commit '8ddc32629a6d6be77256694c9e322dde134609f3'
[ffmpeg.git] / libavutil / mem.c
index 8226168eedc62ed002c6328653e2fd4b1ec6a9ef..35a82e8a2dfb09fb88e3b583ce9eca7ef8b3417a 100644 (file)
@@ -267,6 +267,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;
+}
+
 void *av_memdup(const void *p, size_t size)
 {
     void *ptr = NULL;