diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c
index 81800ce8c4..3a3ea92418 100644
--- a/libavformat/mxfdec.c
+++ b/libavformat/mxfdec.c
@@ -721,6 +721,7 @@ static inline int mxf_read_utf16_string(AVIOContext *pb, int size, char** str, i
         return AVERROR(EINVAL);
 
     buf_size = size + size / 2 + 1;
+    av_free(*str);
     *str = av_malloc(buf_size);
     if (!*str)
         return AVERROR(ENOMEM);