diff --git a/libavformat/utils.c b/libavformat/utils.c
index a4c8b6f77fb3532414bba9a14828e37684bcaf15..ab64bfc22bbbff0d1c03c1b840d79ac83210c2a6 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -2184,12 +2184,11 @@ int av_write_header(AVFormatContext *s)
         }
     }
 
-    if (s->oformat->priv_data_size > 0) {
+    if (!s->priv_data && s->oformat->priv_data_size > 0) {
         s->priv_data = av_mallocz(s->oformat->priv_data_size);
         if (!s->priv_data)
             return AVERROR_NOMEM;
-    } else
-        s->priv_data = NULL;
+    }
 
     if(s->oformat->write_header){
         ret = s->oformat->write_header(s);