You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ap...@apache.org on 2006/11/04 18:59:27 UTC

svn commit: r471239 - /incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/native/gl/shared/gifdecoder.c

Author: apetrenko
Date: Sat Nov  4 09:59:26 2006
New Revision: 471239

URL: http://svn.apache.org/viewvc?view=rev&rev=471239
Log:
Patch for HARMONY-1647 "[classlib][awt][gifdecoder] Memory corruption while decoding non-interlaced GIF"

Modified:
    incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/native/gl/shared/gifdecoder.c

Modified: incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/native/gl/shared/gifdecoder.c
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/native/gl/shared/gifdecoder.c?view=diff&rev=471239&r1=471238&r2=471239
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/native/gl/shared/gifdecoder.c (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/awt/src/main/native/gl/shared/gifdecoder.c Sat Nov  4 09:59:26 2006
@@ -785,6 +785,8 @@
           // Now process the obtained code
           if (di->currCode == di->eoiCode) { // EOI encountered, stop processing
             decoder->inputPtr += blockSize;
+            // Ensure that no more data will be decoded
+            di->shiftState = 0;
             blockSize = 0;
             decoder->doProcessing = FALSE;
           } else if(di->currCode == di->clearCode) { // Clear code - reset code size
@@ -979,6 +981,8 @@
           if (di->currCode == di->eoiCode) { // EOI encountered, stop processing
             decoder->inputPtr += blockSize;
             decoder->leftInBlock = 0;
+            // Ensure that no more data will be decoded
+            di->shiftState = 0;            
             blockSize = 0;
             decoder->doProcessing = FALSE;
           } else if(di->currCode == di->clearCode) { // Clear code - reset code size