[Scummvm-cvs-logs] scummvm master -> 48dd74dd6d2c5514eba475f3612a0a1333342763

wjp wjp at usecode.org
Mon Aug 22 10:27:57 CEST 2011


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
48dd74dd6d SCUMM: Revert "Avoid calling malloc with new_size=0"


Commit: 48dd74dd6d2c5514eba475f3612a0a1333342763
    https://github.com/scummvm/scummvm/commit/48dd74dd6d2c5514eba475f3612a0a1333342763
Author: Willem Jan Palenstijn (wjp at usecode.org)
Date: 2011-08-22T01:24:26-07:00

Commit Message:
SCUMM: Revert "Avoid calling malloc with new_size=0"

This reverts commit d6f7e5933657e2e6fcbd1accf9f8a4b77454daec, and
marks the issue with a FIXME. The problem is that it not only skips the malloc,
but also the other code in that block.

Changed paths:
    engines/scumm/smush/channel.cpp



diff --git a/engines/scumm/smush/channel.cpp b/engines/scumm/smush/channel.cpp
index f5e0747..fd822f5 100644
--- a/engines/scumm/smush/channel.cpp
+++ b/engines/scumm/smush/channel.cpp
@@ -60,6 +60,8 @@ void SmushChannel::processBuffer() {
 			if (offset < _tbufferSize) {
 				int new_size = _tbufferSize - offset;
 				_tbuffer = (byte *)malloc(new_size);
+				// FIXME: _tbuffer might be 0 if new_size is 0.
+				// NB: Also check other "if (_tbuffer)" locations in smush
 				if (!_tbuffer)
 					error("smush channel failed to allocate memory");
 				memcpy(_tbuffer, _sbuffer + offset, new_size);
@@ -94,16 +96,16 @@ void SmushChannel::processBuffer() {
 			_tbufferSize = 0;
 		} else {
 			if (offset) {
+				byte *old = _tbuffer;
 				int32 new_size = _tbufferSize - offset;
-				if (new_size) {
-					byte *old = _tbuffer;
-					_tbuffer = (byte *)malloc(new_size);
-					if (!_tbuffer)
-						error("smush channel failed to allocate memory");
-					memcpy(_tbuffer, old + offset, new_size);
-					_tbufferSize = new_size;
-					free(old);
-				}
+				_tbuffer = (byte *)malloc(new_size);
+				// FIXME: _tbuffer might be 0 if new_size is 0.
+				// NB: Also check other "if (_tbuffer)" locations in smush
+				if (!_tbuffer)
+					error("smush channel failed to allocate memory");
+				memcpy(_tbuffer, old + offset, new_size);
+				_tbufferSize = new_size;
+				free(old);
 			}
 		}
 	}






More information about the Scummvm-git-logs mailing list