fix memory corruption on showSinglePic
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>
Wed, 21 Mar 2007 00:18:45 +0000 (00:18 +0000)
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>
Wed, 21 Mar 2007 00:18:45 +0000 (00:18 +0000)
lib/dvb/decoder.cpp

index fdd3f8724485ad61498c73e93dc56228916baa27..beec1078fcba12865b54467a0f692967665385a8 100644 (file)
@@ -846,20 +846,20 @@ RESULT eTSMPEGDecoder::showSinglePic(const char *filename)
                                {
                                        int rd;
                                        fseek(f, 0, SEEK_SET);
+                                       if (!cnt)
+                                       {
+                                               buffer[pos++]=0;
+                                               buffer[pos++]=0;
+                                               buffer[pos++]=1;
+                                               buffer[pos++]=0xE0;
+                                               buffer[pos++]=(length*3)>>8;
+                                               buffer[pos++]=(length*3)&0xFF;
+                                               buffer[pos++]=0x80;
+                                               buffer[pos++]=0;
+                                               buffer[pos++]=0;
+                                       }
                                        while(1)
                                        {
-                                               if (!cnt)
-                                               {
-                                                       buffer[pos++]=0;
-                                                       buffer[pos++]=0;
-                                                       buffer[pos++]=1;
-                                                       buffer[pos++]=0xE0;
-                                                       buffer[pos++]=(length*3)>>8;
-                                                       buffer[pos++]=(length*3)&0xFF;
-                                                       buffer[pos++]=0x80;
-                                                       buffer[pos++]=0;
-                                                       buffer[pos++]=0;
-                                               }
                                                rd = fread(buffer+pos, 1, length, f);
                                                if (rd > 0)
                                                        pos += rd;