Avoid code duplication in xan_unpack for the final memcpy.
authorReimar Döffinger <Reimar.Doeffinger@gmx.de>
Sat, 18 Apr 2009 17:26:00 +0000 (17:26 +0000)
committerReimar Döffinger <Reimar.Doeffinger@gmx.de>
Sat, 18 Apr 2009 17:26:00 +0000 (17:26 +0000)
Originally committed as revision 18608 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/xan.c

index 748f4d1..aacdcc1 100644 (file)
@@ -157,17 +157,18 @@ static void xan_unpack(unsigned char *dest, const unsigned char *src, int dest_l
             av_memcpy_backptr(dest, back, size2);
             dest += size2;
         } else {
+            int finish;
             size = ((opcode & 0x1f) << 2) + 4;
 
-            if (size > 0x70)
-                break;
+            finish = size > 0x70;
+            if (finish)
+                size = opcode & 3;
 
             memcpy(dest, src, size);  dest += size;  src += size;
+            if (finish)
+                return;
         }
     }
-
-    size = opcode & 3;
-    memcpy(dest, src, size);  dest += size;  src += size;
 }
 
 static inline void xan_wc3_output_pixel_run(XanContext *s,