diff --git a/vp8/decoder/decodframe.c b/vp8/decoder/decodframe.c
index 04fb03fa4df99f79bf3c0fcdd0434dfc74882527..72c312fc1d461b08bc4f4472320f10dd08767e05 100644
--- a/vp8/decoder/decodframe.c
+++ b/vp8/decoder/decodframe.c
@@ -317,20 +317,19 @@ void vp8_decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd)
 
     xd->mode_info_context->mbmi.dc_diff = 1;
 
-    do {
-        if (xd->mbmi.mode != B_PRED && xd->mbmi.mode != SPLITMV && eobtotal == 0)
-        {
-            xd->mode_info_context->mbmi.dc_diff = 0;
-            skip_recon_mb(pbi, xd);
-            break;
-        }
-
+    if (xd->mbmi.mode != B_PRED && xd->mbmi.mode != SPLITMV && eobtotal == 0)
+    {
+        xd->mode_info_context->mbmi.dc_diff = 0;
+        skip_recon_mb(pbi, xd);
+    }
+    else
+    {
         if (xd->segmentation_enabled)
             mb_init_dequantizer(pbi, xd);
 
         de_quantand_idct(pbi, xd);
         reconstruct_mb(pbi, xd);
-    } while(0);
+    }
 
 
     /* Restore the original MV so as not to affect the entropy context. */