[Scummvm-cvs-logs] scummvm master -> a3985f38ac536b5a81c13aaeb31de165074e9c6d

sev- sev at scummvm.org
Thu May 12 17:27:14 CEST 2016


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

Summary:
ba8c9271cf AGOS: Safer string manipulation
b3a238a750 SKY: Safer string manipulation
c5ed11eaed SCUMM HE: Merge in quad and singles code
a3985f38ac SCUMM HE: Force full screen dirty on FOW drawing


Commit: ba8c9271cf548b9b578fa29b67c35db3fe652d06
    https://github.com/scummvm/scummvm/commit/ba8c9271cf548b9b578fa29b67c35db3fe652d06
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-05-12T14:29:53+02:00

Commit Message:
AGOS: Safer string manipulation

Changed paths:
    engines/agos/string.cpp
    engines/agos/string_pn.cpp



diff --git a/engines/agos/string.cpp b/engines/agos/string.cpp
index 4f6c62c..cc443f2 100644
--- a/engines/agos/string.cpp
+++ b/engines/agos/string.cpp
@@ -126,14 +126,14 @@ const byte *AGOSEngine::getStringPtrByID(uint16 stringId, bool upperCase) {
 		_awaitTwoByteToken = 0;
 		uncompressText(ptr);
 		_textBuffer[_textCount] = 0;
-		strcpy((char *)dst, (const char *)_textBuffer);
+		Common::strlcpy((char *)dst, (const char *)_textBuffer, 180);
 	} else {
 		if (stringId < 0x8000) {
 			stringPtr = _stringTabPtr[stringId];
 		} else {
 			stringPtr = getLocalStringByID(stringId);
 		}
-		strcpy((char *)dst, (const char *)stringPtr);
+		Common::strlcpy((char *)dst, (const char *)stringPtr, 180);
 	}
 
 	// WORKAROUND bug #1538873: The French version of Simon 1 and the
@@ -796,7 +796,7 @@ void AGOSEngine_Feeble::printInteractText(uint16 num, const char *string) {
 		if (*string2 == 0x00) {
 			if (w == 0xFFFF)
 				w = pixels;
-			strcpy(convertedString2, string);
+			Common::strlcpy(convertedString2, string, 320);
 			break;
 		}
 		while (*string2 != ' ') {
diff --git a/engines/agos/string_pn.cpp b/engines/agos/string_pn.cpp
index 7a364f3..06c8bbd 100644
--- a/engines/agos/string_pn.cpp
+++ b/engines/agos/string_pn.cpp
@@ -114,7 +114,7 @@ void AGOSEngine_PN::getObjectName(char *v, uint16 x) {
 }
 
 void AGOSEngine_PN::pcl(const char *s) {
-	strcat(_sb, s);
+	Common::strlcat(_sb, s, 80);
 	if (strchr(s, '\n') == 0) {
 		for (char *str = _sb; *str; str++)
 			windowPutChar(_windowArray[_curWindow], *str);


Commit: b3a238a7508b51927c436f3beb1bf0dd556c44f3
    https://github.com/scummvm/scummvm/commit/b3a238a7508b51927c436f3beb1bf0dd556c44f3
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-05-12T14:42:12+02:00

Commit Message:
SKY: Safer string manipulation

Changed paths:
    engines/sky/control.cpp



diff --git a/engines/sky/control.cpp b/engines/sky/control.cpp
index 9f78234..99e6daa 100644
--- a/engines/sky/control.cpp
+++ b/engines/sky/control.cpp
@@ -167,7 +167,7 @@ ControlStatus::~ControlStatus() {
 
 void ControlStatus::setToText(const char *newText) {
 	char tmpLine[256];
-	strcpy(tmpLine, newText);
+	Common::strlcpy(tmpLine, newText, 256);
 	if (_textData) {
 		_statusText->flushForRedraw();
 		free(_textData);


Commit: c5ed11eaede54c6e7fafd210431a4c617708ca3e
    https://github.com/scummvm/scummvm/commit/c5ed11eaede54c6e7fafd210431a4c617708ca3e
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-05-12T15:41:13+02:00

Commit Message:
SCUMM HE: Merge in quad and singles code

Changed paths:
    engines/scumm/he/moonbase/moonbase.cpp



diff --git a/engines/scumm/he/moonbase/moonbase.cpp b/engines/scumm/he/moonbase/moonbase.cpp
index 9dc58af..414a177 100644
--- a/engines/scumm/he/moonbase/moonbase.cpp
+++ b/engines/scumm/he/moonbase/moonbase.cpp
@@ -88,13 +88,25 @@ void Moonbase::blitT14WizImage(uint8 *dst, int dstw, int dsth, int dstPitch, con
 			int code = *codes - 2;
 			codes++;
 
-			if (code == 0) { // quad
-				for (int c = 0; c < 4; c++) {
+			if (code <= 0) { // quad or single
+				uint8 *src;
+				int cnt;
+				if (code == 0) { // quad
+					src = quadsOffset;
+					quadsOffset += 8;
+					cnt = 4; // 4 pixels
+				} else { // single
+					src = singlesOffset;
+					singlesOffset += 2;
+					cnt = 1;
+				}
+
+				for (int c = 0; c < cnt; c++) {
 					if (pixels >= sx) {
 						if (rawROP == 1) { // MMX_PREMUL_ALPHA_COPY
-							WRITE_LE_UINT16(dst1, READ_LE_UINT16(quadsOffset));
+							WRITE_LE_UINT16(dst1, READ_LE_UINT16(src));
 						} else if (rawROP == 2) { // MMX_ADDITIVE
-							uint16 color = READ_LE_UINT16(quadsOffset);
+							uint16 color = READ_LE_UINT16(src);
 							uint32 orig = READ_LE_UINT16(dst1);
 
 							uint32 r = MIN<uint32>(0x7c00, (orig & 0x7c00) + (color & 0x7c00));
@@ -104,26 +116,9 @@ void Moonbase::blitT14WizImage(uint8 *dst, int dstw, int dsth, int dstPitch, con
 						}
 						dst1 += 2;
 					}
-					quadsOffset += 2;
+					src += 2;
 					pixels++;
 				}
-			} else if (code < 0) { // single
-				if (pixels >= sx) {
-					if (rawROP == 1) { // MMX_PREMUL_ALPHA_COPY
-						WRITE_LE_UINT16(dst1, READ_LE_UINT16(singlesOffset));
-					} else if (rawROP == 2) { // MMX_ADDITIVE
-						uint16 color = READ_LE_UINT16(singlesOffset);
-						uint32 orig = READ_LE_UINT16(dst1);
-
-						uint32 r = MIN<uint32>(0x7c00u, (orig & 0x7c00) + (color & 0x7c00));
-						uint32 g = MIN<uint32>(0x03e0u, (orig & 0x03e0) + (color & 0x03e0));
-						uint32 b = MIN<uint32>(0x001fu, (orig & 0x001f) + (color & 0x001f));
-						WRITE_LE_UINT16(dst1, (r | g | b));
-					}
-					dst1 += 2;
-				}
-				singlesOffset += 2;
-				pixels++;
 			} else { // skip
 				if ((code & 1) == 0) {
 					code >>= 1;


Commit: a3985f38ac536b5a81c13aaeb31de165074e9c6d
    https://github.com/scummvm/scummvm/commit/a3985f38ac536b5a81c13aaeb31de165074e9c6d
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-05-12T17:27:27+02:00

Commit Message:
SCUMM HE: Force full screen dirty on FOW drawing

Changed paths:
    engines/scumm/he/wiz_he.cpp



diff --git a/engines/scumm/he/wiz_he.cpp b/engines/scumm/he/wiz_he.cpp
index 8e2ac8a..2a9f7ec 100644
--- a/engines/scumm/he/wiz_he.cpp
+++ b/engines/scumm/he/wiz_he.cpp
@@ -1577,6 +1577,10 @@ uint8 *Wiz::drawWizImage(int resNum, int state, int maskNum, int maskState, int
 			state == _vm->_moonbase->_fowSentinelState &&
 			conditionBits == _vm->_moonbase->_fowSentinelConditionBits) {
 		_vm->_moonbase->renderFOW(dst, dstPitch, dstType, cw, ch, flags);
+		x1 = 0;
+		y1 = 0;
+		width = rScreen.width();
+		height = rScreen.height();
 	} else {
 		drawWizImageEx(dst, dataPtr, mask, dstPitch, dstType, cw, ch, x1, y1, width, height,
 			state, &rScreen, flags, palPtr, transColor, _vm->_bytesPerPixel, xmapPtr, conditionBits);






More information about the Scummvm-git-logs mailing list