diff --git a/libavfilter/af_aformat.c b/libavfilter/af_aformat.c
index e8926355e2de97a29bce4e4b63cc378d1f05ed12..e7ef7f062adeff97732412f471de7941319e7f63 100644
--- a/libavfilter/af_aformat.c
+++ b/libavfilter/af_aformat.c
@@ -42,7 +42,7 @@ static av_cold int init(AVFilterContext *ctx, const char *args, void *opaque)
     if (!args)
         goto arg_fail;
 
-#define ADD_FORMATS(all_formats, fmt_name, fmt_type, fmts_list)         \
+#define ADD_FORMATS(all_formats, fmt_name, fmt_type, fmts_list) do {    \
     fmts_str = av_get_token(&args, ":");                                \
     if (!fmts_str || !*fmts_str)                                        \
         goto arg_fail;                                                  \
@@ -61,7 +61,8 @@ static av_cold int init(AVFilterContext *ctx, const char *args, void *opaque)
     }                                                                   \
     av_freep(&fmts_str);                                                \
     if (*args)                                                          \
-        args++;
+        args++;                                                         \
+} while (0)
 
     ADD_FORMATS(avfilter_make_all_formats(AVMEDIA_TYPE_AUDIO), sample_format, int, formats);
     ADD_FORMATS(avfilter_make_all_channel_layouts(), channel_layout, int64_t, chlayouts);