[Scummvm-git-logs] scummvm master -> 0d7d1ed2f8335a6423e287efb9c253908e53f3c5

sev- sev at scummvm.org
Mon Jan 6 17:33:53 UTC 2020


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

Summary:
54709929c6 DIRECTOR: Moved TransitionType to types.h
5bd28cc7e0 DIRECTOR: Improved text flags processing
1fea08e240 DIRECTOR: Fix switch statement
046c1fc1c7 DIRECTOR: Plug memory leak
14719c46c7 DIRECTOR: LINGO: Clarify the control flow
a6307b768c COMMON: Fix reading beyond array pointers in toString()
6ce6922eef IMAGE: Fix potential memory leaks
0d7d1ed2f8 DIRECTOR: Plug memory leak in Cast


Commit: 54709929c6594d7fa782550b8c0c00ade3d1fc08
    https://github.com/scummvm/scummvm/commit/54709929c6594d7fa782550b8c0c00ade3d1fc08
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-01-06T09:25:29+01:00

Commit Message:
DIRECTOR: Moved TransitionType to types.h

Changed paths:
    engines/director/frame.h
    engines/director/types.h


diff --git a/engines/director/frame.h b/engines/director/frame.h
index 25192af..970e8a4 100644
--- a/engines/director/frame.h
+++ b/engines/director/frame.h
@@ -46,62 +46,6 @@ enum {
 	kChannelDataSize = (25 * 50)
 };
 
-enum TransitionType {
-	kTransNone,
-	kTransWipeRight,
-	kTransWipeLeft,
-	kTransWipeDown,
-	kTransWipeUp,
-	kTransCenterOutHorizontal,
-	kTransEdgesInHorizontal,
-	kTransCenterOutVertical,
-	kTransEdgesInVertical,
-	kTransCenterOutSquare,
-	kTransEdgesInSquare,
-	kTransPushLeft,
-	kTransPushRight,
-	kTransPushDown,
-	kTransPushUp,
-	kTransRevealUp,
-	kTransRevealUpRight,
-	kTransRevealRight,
-	kTransRevealDown,
-	kTransRevealDownRight,
-	kTransRevealDownLeft,
-	kTransRevealLeft,
-	kTransRevealUpLeft,
-	kTransDissolvePixelsFast,
-	kTransDissolveBoxyRects,
-	kTransDissolveBoxySquares,
-	kTransDissolvePatterns,
-	kTransRandomRows,
-	kTransRandomColumns,
-	kTransCoverDown,
-	kTransCoverDownLeft,
-	kTransCoverDownRight,
-	kTransCoverLeft,
-	kTransCoverRight,
-	kTransCoverUp,
-	kTransCoverUpLeft,
-	kTransCoverUpRight,
-	kTransTypeVenitianBlind,
-	kTransTypeCheckerboard,
-	kTransTypeStripsBottomBuildLeft,
-	kTransTypeStripsBottomBuildRight,
-	kTransTypeStripsLeftBuildDown,
-	kTransTypeStripsLeftBuildUp,
-	kTransTypeStripsRightBuildDown,
-	kTransTypeStripsRightBuildUp,
-	kTransTypeStripsTopBuildLeft,
-	kTransTypeStripsTopBuildRight,
-	kTransZoomOpen,
-	kTransZoomClose,
-	kTransVerticalBinds,
-	kTransDissolveBitsTrans,
-	kTransDissolvePixels,
-	kTransDissolveBits
-};
-
 struct PaletteInfo {
 	uint8 firstColor;
 	uint8 lastColor;
diff --git a/engines/director/types.h b/engines/director/types.h
index d05cd3b..4a203f9 100644
--- a/engines/director/types.h
+++ b/engines/director/types.h
@@ -174,6 +174,62 @@ enum LEvent {
 	kEventStart
 };
 
+enum TransitionType {
+	kTransNone,
+	kTransWipeRight,
+	kTransWipeLeft,
+	kTransWipeDown,
+	kTransWipeUp,
+	kTransCenterOutHorizontal,
+	kTransEdgesInHorizontal,
+	kTransCenterOutVertical,
+	kTransEdgesInVertical,
+	kTransCenterOutSquare,
+	kTransEdgesInSquare,
+	kTransPushLeft,
+	kTransPushRight,
+	kTransPushDown,
+	kTransPushUp,
+	kTransRevealUp,
+	kTransRevealUpRight,
+	kTransRevealRight,
+	kTransRevealDown,
+	kTransRevealDownRight,
+	kTransRevealDownLeft,
+	kTransRevealLeft,
+	kTransRevealUpLeft,
+	kTransDissolvePixelsFast,
+	kTransDissolveBoxyRects,
+	kTransDissolveBoxySquares,
+	kTransDissolvePatterns,
+	kTransRandomRows,
+	kTransRandomColumns,
+	kTransCoverDown,
+	kTransCoverDownLeft,
+	kTransCoverDownRight,
+	kTransCoverLeft,
+	kTransCoverRight,
+	kTransCoverUp,
+	kTransCoverUpLeft,
+	kTransCoverUpRight,
+	kTransTypeVenitianBlind,
+	kTransTypeCheckerboard,
+	kTransTypeStripsBottomBuildLeft,
+	kTransTypeStripsBottomBuildRight,
+	kTransTypeStripsLeftBuildDown,
+	kTransTypeStripsLeftBuildUp,
+	kTransTypeStripsRightBuildDown,
+	kTransTypeStripsRightBuildUp,
+	kTransTypeStripsTopBuildLeft,
+	kTransTypeStripsTopBuildRight,
+	kTransZoomOpen,
+	kTransZoomClose,
+	kTransVerticalBinds,
+	kTransDissolveBitsTrans,
+	kTransDissolvePixels,
+	kTransDissolveBits
+};
+
 
 const char *scriptType2str(ScriptType scr);
 


Commit: 5bd28cc7e0b6c01643b00afe1efd4a301e8186ec
    https://github.com/scummvm/scummvm/commit/5bd28cc7e0b6c01643b00afe1efd4a301e8186ec
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-01-06T09:36:10+01:00

Commit Message:
DIRECTOR: Improved text flags processing

Changed paths:
    engines/director/cast.cpp
    engines/director/cast.h
    engines/director/types.h


diff --git a/engines/director/cast.cpp b/engines/director/cast.cpp
index a386744..825c3b2 100644
--- a/engines/director/cast.cpp
+++ b/engines/director/cast.cpp
@@ -117,7 +117,8 @@ TextCast::TextCast(Common::ReadStreamEndian &stream, uint16 version) {
 	_gutterSize = kSizeNone;
 	_boxShadow = kSizeNone;
 
-	_flags1 = 0;
+	_flags = 0;
+	_textFlags = 0;
 	_fontId = 0;
 	_fontSize = 12;
 	_textType = kTextTypeFixed;
@@ -127,7 +128,7 @@ TextCast::TextCast(Common::ReadStreamEndian &stream, uint16 version) {
 	_palinfo1 = _palinfo2 = _palinfo3 = 0;
 
 	if (version <= 3) {
-		_flags1 = stream.readByte(); // region: 0 - auto, 1 - matte, 2 - disabled
+		_flags = stream.readByte(); // region: 0 - auto, 1 - matte, 2 - disabled
 		_borderSize = static_cast<SizeType>(stream.readByte());
 		_gutterSize = static_cast<SizeType>(stream.readByte());
 		_boxShadow = static_cast<SizeType>(stream.readByte());
@@ -141,7 +142,6 @@ TextCast::TextCast(Common::ReadStreamEndian &stream, uint16 version) {
 		uint16 pad3;
 		uint16 pad4 = 0;
 		uint16 totalTextHeight;
-		byte flags = 0;
 
 		if (version == 2) {
 			pad2 = stream.readUint16();
@@ -153,15 +153,9 @@ TextCast::TextCast(Common::ReadStreamEndian &stream, uint16 version) {
 			pad3 = stream.readUint16();
 
 			_textShadow = static_cast<SizeType>(stream.readByte());
-			flags = stream.readByte();
-			if (flags & 0x1)
-				_textFlags.push_back(kTextFlagEditable);
-			if (flags & 0x2)
-				_textFlags.push_back(kTextFlagAutoTab);
-			if (flags & 0x4)
-				_textFlags.push_back(kTextFlagDoNotWrap);
-			if (flags & 0xf8)
-				warning("Unprocessed text cast flags: %x", flags & 0xf8);
+			_textFlags = stream.readByte();
+			if (_textFlags & 0xf8)
+				warning("Unprocessed text cast flags: %x", _textFlags & 0xf8);
 
 			totalTextHeight = stream.readUint16();
 		} else {
@@ -173,9 +167,9 @@ TextCast::TextCast(Common::ReadStreamEndian &stream, uint16 version) {
 		}
 
 		debugC(2, kDebugLoading, "TextCast(): flags1: %d, border: %d gutter: %d shadow: %d pad1: %x align: %04x",
-				_flags1, _borderSize, _gutterSize, _boxShadow, pad1, _textAlign);
+				_flags, _borderSize, _gutterSize, _boxShadow, pad1, _textAlign);
 		debugC(2, kDebugLoading, "TextCast(): rgb: 0x%04x 0x%04x 0x%04x, pad2: %x pad3: %d pad4: %d shadow: %d flags: %d totHeight: %d",
-				_palinfo1, _palinfo2, _palinfo3, pad2, pad3, pad4, _textShadow, flags, totalTextHeight);
+				_palinfo1, _palinfo2, _palinfo3, pad2, pad3, pad4, _textShadow, _textFlags, totalTextHeight);
 		if (debugChannelSet(2, kDebugLoading)) {
 			_initialRect.debugPrint(2, "TextCast(): rect:");
 		}
diff --git a/engines/director/cast.h b/engines/director/cast.h
index 03767ec..3d8db52 100644
--- a/engines/director/cast.h
+++ b/engines/director/cast.h
@@ -92,14 +92,14 @@ public:
 	SizeType _gutterSize;
 	SizeType _boxShadow;
 
-	byte _flags1;
+	byte _flags;
 	uint32 _fontId;
 	uint16 _fontSize;
 	TextType _textType;
 	TextAlignType _textAlign;
 	SizeType _textShadow;
 	byte _textSlant;
-	Common::Array<TextFlag> _textFlags;
+	byte _textFlags;
 	uint16 _palinfo1, _palinfo2, _palinfo3;
 
 	Common::String _ftext;
diff --git a/engines/director/types.h b/engines/director/types.h
index 4a203f9..0a170ff 100644
--- a/engines/director/types.h
+++ b/engines/director/types.h
@@ -71,9 +71,9 @@ enum TextAlignType {
 };
 
 enum TextFlag {
-	kTextFlagEditable,
-	kTextFlagAutoTab,
-	kTextFlagDoNotWrap
+	kTextFlagEditable	= (1 << 0),
+	kTextFlagAutoTab	= (1 << 1),
+	kTextFlagDoNotWrap	= (1 << 2)
 };
 
 enum SizeType {


Commit: 1fea08e240499af5002e7907180857e6932d857f
    https://github.com/scummvm/scummvm/commit/1fea08e240499af5002e7907180857e6932d857f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-01-06T13:09:07+01:00

Commit Message:
DIRECTOR: Fix switch statement

Changed paths:
    engines/director/sprite.cpp


diff --git a/engines/director/sprite.cpp b/engines/director/sprite.cpp
index d9f8291..4a741c3 100644
--- a/engines/director/sprite.cpp
+++ b/engines/director/sprite.cpp
@@ -146,6 +146,7 @@ void Sprite::setPattern(uint16 pattern) {
 	case kOutlinedRoundedRectangleSprite:
 	case kOutlinedOvalSprite:
 		_castId = pattern;
+		break;
 
 	case kCastMemberSprite:
 		// TODO


Commit: 046c1fc1c78f52245d8aca3c2ecf281ae7da104c
    https://github.com/scummvm/scummvm/commit/046c1fc1c78f52245d8aca3c2ecf281ae7da104c
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-01-06T13:24:02+01:00

Commit Message:
DIRECTOR: Plug memory leak

Changed paths:
    engines/director/images.cpp


diff --git a/engines/director/images.cpp b/engines/director/images.cpp
index 10d73ac..bff1a6a 100644
--- a/engines/director/images.cpp
+++ b/engines/director/images.cpp
@@ -149,6 +149,7 @@ BITDDecoder::~BITDDecoder() {
 }
 
 void BITDDecoder::destroy() {
+	delete _surface;
 	_surface = 0;
 
 	delete[] _palette;


Commit: 14719c46c718cf284bde7d54842ec338510aa273
    https://github.com/scummvm/scummvm/commit/14719c46c718cf284bde7d54842ec338510aa273
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-01-06T13:26:18+01:00

Commit Message:
DIRECTOR: LINGO: Clarify the control flow

Changed paths:
    engines/director/lingo/lingo.cpp


diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index 03533ba..31f2046 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -323,6 +323,7 @@ double Datum::toFloat() {
 	switch (type) {
 	case REFERENCE:
 		toString();
+		// fallthrough
 	case STRING:
 		u.f = atof(u.s->c_str());
 		break;


Commit: a6307b768c1d1771c031cc8061a929b45a3d66ac
    https://github.com/scummvm/scummvm/commit/a6307b768c1d1771c031cc8061a929b45a3d66ac
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-01-06T13:31:58+01:00

Commit Message:
COMMON: Fix reading beyond array pointers in toString()

Changed paths:
    common/str.cpp


diff --git a/common/str.cpp b/common/str.cpp
index 0082dc1..ad9e178 100644
--- a/common/str.cpp
+++ b/common/str.cpp
@@ -1097,7 +1097,7 @@ size_t strnlen(const char *src, size_t maxSize) {
 String toPrintable(const String &in, bool keepNewLines) {
 	Common::String res;
 
-	const char *tr =    "\x01\x02\x03\x04\x05\x06" "a"
+	const char *tr = "\x01\x01\x02\x03\x04\x05\x06" "a"
 				  //"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f";
 					   "b" "t" "n" "v" "f" "r\x0e\x0f"
 					"\x10\x11\x12\x13\x14\x15\x16\x17"
@@ -1117,10 +1117,10 @@ String toPrintable(const String &in, bool keepNewLines) {
 			res += '\\';
 
 			if (*p < 0x20) {
-				if (tr[*p + 1] < 0x20)
+				if (tr[*p] < 0x20)
 					res += Common::String::format("x%02x", *p);
 				else
-					res += tr[*p + 1];
+					res += tr[*p];
 			} else {
 				res += *p;	// We will escape it
 			}


Commit: 6ce6922eef47b4a1a56b7f514937e1cae05ebbd1
    https://github.com/scummvm/scummvm/commit/6ce6922eef47b4a1a56b7f514937e1cae05ebbd1
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-01-06T13:35:04+01:00

Commit Message:
IMAGE: Fix potential memory leaks

Changed paths:
    image/png.cpp


diff --git a/image/png.cpp b/image/png.cpp
index 1072d41..307334a 100644
--- a/image/png.cpp
+++ b/image/png.cpp
@@ -283,11 +283,19 @@ bool writePNG(Common::WriteStream &out, const Graphics::Surface &input) {
 
 	png_structp pngPtr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
 	if (!pngPtr) {
+		if (tmp) {
+			tmp->free();
+			delete tmp;
+		}
 		return false;
 	}
 	png_infop infoPtr = png_create_info_struct(pngPtr);
 	if (!infoPtr) {
 		png_destroy_write_struct(&pngPtr, NULL);
+		if (tmp) {
+			tmp->free();
+			delete tmp;
+		}
 		return false;
 	}
 


Commit: 0d7d1ed2f8335a6423e287efb9c253908e53f3c5
    https://github.com/scummvm/scummvm/commit/0d7d1ed2f8335a6423e287efb9c253908e53f3c5
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-01-06T13:40:24+01:00

Commit Message:
DIRECTOR: Plug memory leak in Cast

Changed paths:
    engines/director/cast.cpp
    engines/director/cast.h


diff --git a/engines/director/cast.cpp b/engines/director/cast.cpp
index 825c3b2..4537742 100644
--- a/engines/director/cast.cpp
+++ b/engines/director/cast.cpp
@@ -21,6 +21,7 @@
  */
 
 #include "common/substream.h"
+#include "graphics/surface.h"
 
 #include "director/director.h"
 #include "director/cachedmactext.h"
@@ -30,6 +31,17 @@
 
 namespace Director {
 
+Cast::Cast() {
+	_type = kCastTypeNull;
+	_surface = nullptr;
+
+	_modified = true;
+}
+
+Cast::~Cast() {
+	delete _surface;
+}
+
 BitmapCast::BitmapCast(Common::ReadStreamEndian &stream, uint32 castTag, uint16 version) {
 	_type = kCastBitmap;
 
@@ -106,7 +118,6 @@ BitmapCast::BitmapCast(Common::ReadStreamEndian &stream, uint32 castTag, uint16
 
 		stream.readUint32();
 	}
-	_modified = 0;
 	_tag = castTag;
 }
 
@@ -223,10 +234,10 @@ TextCast::TextCast(Common::ReadStreamEndian &stream, uint16 version) {
 		stream.readUint16();
 	}
 
-	_modified = 0;
-
 	_cachedMacText = new CachedMacText(this, version, -1, g_director->_wm);
 	// TODO Destroy me
+
+	_modified = false;
 }
 
 void TextCast::importStxt(const Stxt *stxt) {
@@ -305,7 +316,7 @@ ShapeCast::ShapeCast(Common::ReadStreamEndian &stream, uint16 version) {
 		_lineThickness = 1;
 		_lineDirection = 0;
 	}
-	_modified = 0;
+	_modified = false;
 
 	debugC(3, kDebugLoading, "ShapeCast: fl: %x unk1: %x type: %d pat: %d fg: %d bg: %d fill: %d thick: %d dir: %d",
 		flags, unk1, _shapeType, _pattern, _fgCol, _bgCol, _fillType, _lineThickness, _lineDirection);
@@ -329,7 +340,6 @@ ButtonCast::ButtonCast(Common::ReadStreamEndian &stream, uint16 version) : TextC
 
 		_buttonType = static_cast<ButtonType>(stream.readUint16BE());
 	}
-	_modified = 0;
 }
 
 ScriptCast::ScriptCast(Common::ReadStreamEndian &stream, uint16 version) {
@@ -363,7 +373,6 @@ ScriptCast::ScriptCast(Common::ReadStreamEndian &stream, uint16 version) {
 
 		// WIP need to complete this!
 	}
-	_modified = 0;
 }
 
 RTECast::RTECast(Common::ReadStreamEndian &stream, uint16 version) : TextCast(stream, version) {
diff --git a/engines/director/cast.h b/engines/director/cast.h
index 3d8db52..3e1479d 100644
--- a/engines/director/cast.h
+++ b/engines/director/cast.h
@@ -42,6 +42,9 @@ class CachedMacText;
 
 class Cast {
 public:
+	Cast();
+	virtual ~Cast();
+
 	CastType _type;
 	Common::Rect _initialRect;
 	Common::Rect _boundingRect;
@@ -49,7 +52,7 @@ public:
 
 	const Graphics::Surface *_surface;
 
-	byte _modified;
+	bool _modified;
 };
 
 class BitmapCast : public Cast {




More information about the Scummvm-git-logs mailing list