[Scummvm-cvs-logs] CVS: scummvm/sky rnc_deco.cpp,1.11,1.12

Max Horn fingolfin at users.sourceforge.net
Thu Mar 6 08:38:07 CET 2003


Update of /cvsroot/scummvm/scummvm/sky
In directory sc8-pr-cvs1:/tmp/cvs-serv4242

Modified Files:
	rnc_deco.cpp 
Log Message:
more cleanup

Index: rnc_deco.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/rnc_deco.cpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- rnc_deco.cpp	6 Mar 2003 16:08:13 -0000	1.11
+++ rnc_deco.cpp	6 Mar 2003 16:33:29 -0000	1.12
@@ -248,13 +248,14 @@
 
 		counts = inputBits(16);
 
-		for (;;) {
-			uint32 inputBytes = inputValue(_rawTable);
+		do {
+			uint32 inputLength = inputValue(_rawTable);
+			uint32 inputOffset;
 
-			if (inputBytes) {
-				memcpy(_dstPtr, _srcPtr, inputBytes); //memcpy is allowed here
-				_dstPtr += inputBytes;
-				_srcPtr += inputBytes;
+			if (inputLength) {
+				memcpy(_dstPtr, _srcPtr, inputLength); //memcpy is allowed here
+				_dstPtr += inputLength;
+				_srcPtr += inputLength;
 				uint16 b = READ_LE_UINT16(_srcPtr);
 				uint16 a = ROL(b, _bitCount);
 				uint16 d = ((1 << _bitCount) - 1);
@@ -269,22 +270,16 @@
 				_bitBuffh = a;
 			}
 
-			if (--counts) {
-				uint32 inputOffset = inputValue(_posTable) + 1;
-				uint32 inputLength = inputValue(_lenTable) + MIN_LENGTH;
-
-				inputHigh = _srcPtr;
-				_srcPtr = (_dstPtr-inputOffset);
-
-				//Don't use memcpy here! because input and output overlap	
+			if (counts > 1) {
+				inputOffset = inputValue(_posTable) + 1;
+				inputLength = inputValue(_lenTable) + MIN_LENGTH;
+	
+				// Don't use memcpy here! because input and output overlap.
+				uint8 *tmpPtr = (_dstPtr-inputOffset);
 				while (inputLength--)
-					*_dstPtr++ = *_srcPtr++;
-
-				_srcPtr = inputHigh;
-			} else
-				break;
-
-		}
+					*_dstPtr++ = *tmpPtr++;
+			}
+		} while (--counts);
 	} while (--blocks);
 
 	if (CHECKSUMS) {





More information about the Scummvm-git-logs mailing list