diff --git a/libavcodec/vp3.c b/libavcodec/vp3.c
index 970bfee099ea9243e132ff6a7c087fc50f1fb845..170896feddab3192a6dee14f55a7cb12c4b09356 100644
--- a/libavcodec/vp3.c
+++ b/libavcodec/vp3.c
@@ -456,6 +456,7 @@ static void init_loop_filter(Vp3DecodeContext *s)
  */
 static int unpack_superblocks(Vp3DecodeContext *s, GetBitContext *gb)
 {
+    int superblock_starts[3] = { 0, s->u_superblock_start, s->v_superblock_start };
     int bit = 0;
     int current_superblock = 0;
     int current_run = 0;
@@ -547,7 +548,7 @@ static int unpack_superblocks(Vp3DecodeContext *s, GetBitContext *gb)
     memset(s->macroblock_coding, MODE_COPY, s->macroblock_count);
 
     for (plane = 0; plane < 3; plane++) {
-        int sb_start = (int[3]){ 0, s->u_superblock_start, s->v_superblock_start }[plane];
+        int sb_start = superblock_starts[plane];
         int sb_end = sb_start + (plane ? s->c_superblock_count : s->y_superblock_count);
         int num_coded_frags = 0;