diff --git a/libavformat/avio.c b/libavformat/avio.c
index 45ee86688f35d4adbc650a57b2c332fbb682c034..a43b241399184729162b1d3fa4522c0fa041c5c8 100644
--- a/libavformat/avio.c
+++ b/libavformat/avio.c
@@ -85,11 +85,11 @@ const AVClass ffurl_context_class = {
 
 const char *avio_enum_protocols(void **opaque, int output)
 {
-    URLProtocol **p = opaque;
-    *p = ffurl_protocol_next(*p);
-    if (!*p) return NULL;
-    if ((output && (*p)->url_write) || (!output && (*p)->url_read))
-        return (*p)->name;
+    URLProtocol *p;
+    *opaque = ffurl_protocol_next(*opaque);
+    if (!(p = *opaque)) return NULL;
+    if ((output && p->url_write) || (!output && p->url_read))
+        return p->name;
     return avio_enum_protocols(opaque, output);
 }