[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