diff --git a/libavformat/ffmdec.c b/libavformat/ffmdec.c
index c5917a1246d330ab82beca988900a77a0db6b046..1bd380b6a88df6965c39dc88a56db0e92dcc8932 100644
--- a/libavformat/ffmdec.c
+++ b/libavformat/ffmdec.c
@@ -379,8 +379,10 @@ FF_ENABLE_DEPRECATION_WARNINGS
                     goto fail;
                 }
                 codecpar->extradata = av_mallocz(size + AV_INPUT_BUFFER_PADDING_SIZE);
-                if (!codecpar->extradata)
-                    return AVERROR(ENOMEM);
+                if (!codecpar->extradata) {
+                    ret = AVERROR(ENOMEM);
+                    goto fail;
+                }
                 codecpar->extradata_size = size;
                 avio_read(pb, codecpar->extradata, size);
             }
@@ -690,8 +692,10 @@ FF_ENABLE_DEPRECATION_WARNINGS
                 goto fail;
             }
             codecpar->extradata = av_mallocz(size + AV_INPUT_BUFFER_PADDING_SIZE);
-            if (!codecpar->extradata)
-                return AVERROR(ENOMEM);
+            if (!codecpar->extradata) {
+                ret = AVERROR(ENOMEM);
+                goto fail;
+            }
             codecpar->extradata_size = size;
             avio_read(pb, codecpar->extradata, size);
         }