LogoopenSUSE Build Service > Projects
Sign Up | Log In

View File mng-reading-fix.patch of Package qt3 (Project openSUSE:Factory)

--- src/kernel/qmngio.cpp.sav	2007-02-23 14:01:19.000000000 +0100
+++ src/kernel/qmngio.cpp	2007-08-28 15:27:28.000000000 +0200
@@ -411,8 +411,11 @@ int QMNGFormat::decode( QImage& img, QIm
     }
 
     losttime += losingtimer.elapsed();
-    if ( ndata || !length )
-	mng_display_resume(handle);
+    bool needmore = false;
+    if ( ndata ) {
+	mng_retcode r = mng_display_resume(handle);
+	needmore = ( r == MNG_NEEDMOREDATA );
+    }
     losingtimer.start();
 
     image = 0;
@@ -422,6 +425,13 @@ int QMNGFormat::decode( QImage& img, QIm
 	// Move back unused tail
 	memcpy(buffer,buffer+ubuffer,nbuffer);
     }
+    // "The function should return without processing all the data if it reaches the end of a frame in the input."
+    if( ndata && !needmore ) {
+	length -= ndata;
+	ndata = 0;
+	if( length == 0 ) // 0 means done, process at least one byte
+	    length = ndata = 1;
+    }
     if ( ndata ) {
 	// Not all used.
 	enlargeBuffer(nbuffer+ndata);