]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/gifdecod.cpp
Fixed small bug related to m_lastcount in wxInputStream::Read
[wxWidgets.git] / src / common / gifdecod.cpp
index 3345366d7b250423acf27a58f1adb0c8404f9505..04f214a7f519afa91afdeba5bdd48771edc40eb7 100644 (file)
@@ -282,10 +282,14 @@ int wxGIFDecoder::getcode(int bits, int ab_fin)
                 code = ab_fin;
                 break;
             }
                 code = ab_fin;
                 break;
             }
+
+            /* prefetch data */
+            m_f->Read((void *) m_buffer, m_restbyte);
+            m_bufp = m_buffer;
         }
 
         /* read next byte and isolate the bits we need */
         }
 
         /* read next byte and isolate the bits we need */
-        m_lastbyte = (unsigned char)m_f->GetC();
+        m_lastbyte = (unsigned char) (*m_bufp++);
         mask       = (1 << (bits - m_restbits)) - 1;
         code       = code + ((m_lastbyte & mask) << m_restbits);
         m_restbyte--;
         mask       = (1 << (bits - m_restbits)) - 1;
         code       = code + ((m_lastbyte & mask) << m_restbits);
         m_restbyte--;
@@ -335,7 +339,7 @@ int wxGIFDecoder::dgif(IMAGEN *img, int interl, int bits)
     pass     = 1;
     pos = x = y = 0;
 
     pass     = 1;
     pos = x = y = 0;
 
-    /* reset static globals */
+    /* reset decoder vars */
     m_restbits = 0;
     m_restbyte = 0;
     m_lastbyte = 0;
     m_restbits = 0;
     m_restbyte = 0;
     m_lastbyte = 0;
@@ -446,7 +450,7 @@ bool wxGIFDecoder::CanRead()
     unsigned char buf[3];
 
     m_f->Read(buf, 3);
     unsigned char buf[3];
 
     m_f->Read(buf, 3);
-    stream.SeekI(-3, wxFromCurrent);
+    m_f->SeekI(-3, wxFromCurrent);
 
     return (memcmp(buf, "GIF", 3) == 0);
 }
 
     return (memcmp(buf, "GIF", 3) == 0);
 }