diff --git a/libavformat/smoothstreamingenc.c b/libavformat/smoothstreamingenc.c
index d47e44fe6d768edf1b34c4137c2ad1e5de002ae0..5a77ec3f74b96e10b3bd1cb37f62f93480132b46 100644
--- a/libavformat/smoothstreamingenc.c
+++ b/libavformat/smoothstreamingenc.c
@@ -155,9 +155,10 @@ static void get_private_data(OutputStream *os)
         return;
     os->private_str = av_mallocz(2*size + 1);
     if (!os->private_str)
-        return;
+        goto fail;
     for (i = 0; i < size; i++)
         snprintf(&os->private_str[2*i], 3, "%02x", ptr[i]);
+fail:
     if (ptr != codec->extradata)
         av_free(ptr);
 }