fix memory corruption on showSinglePic
[enigma2.git] / 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);
                                {
                                        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)
                                        {
                                        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;
                                                rd = fread(buffer+pos, 1, length, f);
                                                if (rd > 0)
                                                        pos += rd;