[Scummvm-cvs-logs] scummvm master -> 72619334c00e4f366101ac6de9e2238c2a0e4042

sev- sev at scummvm.org
Wed Aug 17 20:23:27 CEST 2016


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

Summary:
49c68ba155 DIRECTOR: Lingo: Added descriptions for rest of the commands
d6086f8036 DIRECTOR: Lingo: Initial function parameter tracing
263588e97e DIRECTOR: Lingo: Finished parameter tracing
76d5435781 DIRECTOR: Optimize code flow for directory scanning
78c50a0f89 DIRECTOR: Fix crashes on object destruction
556a5d572e DIRECTOR: Plug memory leaks
7702c62dfd DIRECTOR: Add missing break in switch statement
b01a58e82c DIRECTOR: Fix memory override
873527ff5e DIRECTOR: Lingo: Fixed 'the' entity retrieval
8192027d1c DIRECTOR: Fix another double free
72619334c0 DIRECTOR: Lingo: Added missing break


Commit: 49c68ba15590b9881908b162ca09291937b42130
    https://github.com/scummvm/scummvm/commit/49c68ba15590b9881908b162ca09291937b42130
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-17T10:22:26+02:00

Commit Message:
DIRECTOR: Lingo: Added descriptions for rest of the commands

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



diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index 0769a0f..150e242 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -56,11 +56,52 @@ static struct FuncDescr {
 	const char *name;
 	const char *args;
 } funcDescr[] = {
+	{ 0,					"STOP",		"" },
 	{ Lingo::c_xpop,		"c_xpop",		"" },
 	{ Lingo::c_printtop,	"c_printtop",	"" },
 	{ Lingo::c_constpush,	"c_constpush",	"i" },
 	{ Lingo::c_voidpush,	"c_voidpush",	"" },
 	{ Lingo::c_fconstpush,	"c_fconstpush",	"f" },
+	{ Lingo::c_stringpush,	"c_stringpush",	"s" },
+	{ Lingo::c_varpush,		"c_varpush",	"s" },
+	{ Lingo::c_assign,		"c_assign",		"" },
+	{ Lingo::c_eval,		"c_eval",		"" },
+	{ Lingo::c_theentitypush,"c_theentitypush","ii" }, // entity, field
+	{ Lingo::c_theentityassign,"c_theentityassign","ii" },
+	{ Lingo::c_swap,		"c_swap",		"" },
+	{ Lingo::c_add,			"c_add",		"" },
+	{ Lingo::c_sub,			"c_sub",		"" },
+	{ Lingo::c_mul,			"c_mul",		"" },
+	{ Lingo::c_div,			"c_div",		"" },
+	{ Lingo::c_negate,		"c_negate",		"" },
+	{ Lingo::c_ampersand,	"c_ampersand",	"" },
+	{ Lingo::c_concat,		"c_concat",		"" },
+	{ Lingo::c_contains,	"c_contains",	"" },
+	{ Lingo::c_starts,		"c_starts",		"" },
+	{ Lingo::c_intersects,	"c_intersects",	"" },
+	{ Lingo::c_within,		"c_within",		"" },
+	{ Lingo::c_and,			"c_and",		"" },
+	{ Lingo::c_or,			"c_or",			"" },
+	{ Lingo::c_not,			"c_not",		"" },
+	{ Lingo::c_eq,			"c_eq",			"" },
+	{ Lingo::c_neq,			"c_neq",		"" },
+	{ Lingo::c_gt,			"c_gt",			"" },
+	{ Lingo::c_lt,			"c_lt",			"" },
+	{ Lingo::c_ge,			"c_ge",			"" },
+	{ Lingo::c_le,			"c_le",			"" },
+	{ Lingo::c_repeatwhilecode,"c_repeatwhilecode","oo" },
+	{ Lingo::c_repeatwithcode,"c_repeatwithcode","ooooos" },
+	{ Lingo::c_ifcode,		"c_ifcode",		"oooi" },
+	{ Lingo::c_goto,		"c_goto",		"" },
+	{ Lingo::c_gotoloop,	"c_gotoloop",	"" },
+	{ Lingo::c_gotonext,	"c_gotonext",	"" },
+	{ Lingo::c_gotoprevious,"c_gotoprevious","" },
+	{ Lingo::c_play,		"c_play",		"" },
+	{ Lingo::c_playdone,	"c_playdone",	"" },
+	{ Lingo::c_call,		"c_call",		"si" },
+	{ Lingo::c_procret,		"c_procret",	"" },
+	{ Lingo::c_global,		"c_global",		"s" },
+	{ Lingo::c_open,		"c_open",		"" },
 	{ 0, 0, 0 }
 };
 


Commit: d6086f8036d6a4346dafeb6343670c4e80818f81
    https://github.com/scummvm/scummvm/commit/d6086f8036d6a4346dafeb6343670c4e80818f81
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-17T10:35:54+02:00

Commit Message:
DIRECTOR: Lingo: Initial function parameter tracing

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



diff --git a/engines/director/lingo/lingo-codegen.cpp b/engines/director/lingo/lingo-codegen.cpp
index a9659f7..8e054b4 100644
--- a/engines/director/lingo/lingo-codegen.cpp
+++ b/engines/director/lingo/lingo-codegen.cpp
@@ -55,7 +55,7 @@ void Lingo::execute(int pc) {
 	for(_pc = pc; (*_currentScript)[_pc] != STOP && !_returning;) {
 		Common::String instr = decodeInstruction(_pc);
 
-		debugC(1, kDebugLingoExec, "E: %s", instr.c_str());
+		debugC(1, kDebugLingoExec, "[%3d]: %s", _pc, instr.c_str());
 
 		for (uint i = 0; i < _stack.size(); i++) {
 			debugCN(5, kDebugLingoExec, "%d ", _stack[i].u.i);
@@ -69,13 +69,39 @@ void Lingo::execute(int pc) {
 
 Common::String Lingo::decodeInstruction(int pc) {
 	Symbol sym;
+	Common::String res;
 
-	sym.u.func = (*_currentScript)[pc];
+	sym.u.func = (*_currentScript)[pc++];
 	if (_functions.contains((void *)sym.u.s)) {
-		return _functions[(void *)sym.u.s]->name;
+		res = _functions[(void *)sym.u.s]->name;
+		const char *pars = _functions[(void *)sym.u.s]->proto;
+		inst i;
+
+		while (*pars) {
+			switch (*pars++) {
+			case 'i':
+				{
+					i = (*_currentScript)[pc++];
+					int v = READ_UINT32(&i);
+
+					res += Common::String::format(" %d", v);
+					break;
+				}
+			case 'o':
+				{
+					i = (*_currentScript)[pc++];
+					int v = READ_UINT32(&i);
+
+					res += Common::String::format(" [%5d]", v);
+					break;
+				}
+			}
+		}
 	} else {
-		return "<unknown>";
+		res = "<unknown>";
 	}
+
+	return res;
 }
 
 Symbol *Lingo::lookupVar(const char *name, bool create, bool putInGlobalList) {


Commit: 263588e97e9e32825864a83e28f31ad6c6241dca
    https://github.com/scummvm/scummvm/commit/263588e97e9e32825864a83e28f31ad6c6241dca
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-17T10:39:42+02:00

Commit Message:
DIRECTOR: Lingo: Finished parameter tracing

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



diff --git a/engines/director/lingo/lingo-codegen.cpp b/engines/director/lingo/lingo-codegen.cpp
index 8e054b4..9390a8b 100644
--- a/engines/director/lingo/lingo-codegen.cpp
+++ b/engines/director/lingo/lingo-codegen.cpp
@@ -95,7 +95,20 @@ Common::String Lingo::decodeInstruction(int pc) {
 					res += Common::String::format(" [%5d]", v);
 					break;
 				}
+			case 's':
+				{
+					char *s = (char *)&(*_currentScript)[pc];
+					pc += calcStringAlignment(s);
+
+					res += Common::String::format(" \"%s\"", s);
+					break;
+				}
+			default:
+				warning("decodeInstruction: Unknown parameter type: %c", pars[-1]);
 			}
+
+			if (*pars)
+				res += ',';
 		}
 	} else {
 		res = "<unknown>";


Commit: 76d54357812675cfdf3ef4a7f898df3df3919834
    https://github.com/scummvm/scummvm/commit/76d54357812675cfdf3ef4a7f898df3df3919834
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-17T11:34:19+02:00

Commit Message:
DIRECTOR: Optimize code flow for directory scanning

Changed paths:
    engines/director/director.cpp



diff --git a/engines/director/director.cpp b/engines/director/director.cpp
index b787935..ddc5adc 100644
--- a/engines/director/director.cpp
+++ b/engines/director/director.cpp
@@ -141,7 +141,8 @@ Common::HashMap<Common::String, Score *> DirectorEngine::loadMMMNames(Common::St
 	Common::FSList movies;
 
 	Common::HashMap<Common::String, Score *> nameMap;
-	directory.getChildren(movies, Common::FSNode::kListFilesOnly);
+	if (!directory.getChildren(movies, Common::FSNode::kListFilesOnly))
+		return nameMap;
 
 	if (!movies.empty()) {
 		for (Common::FSList::const_iterator i = movies.begin(); i != movies.end(); ++i) {


Commit: 78c50a0f8923b0078ba8640a5a29f2cee0b10b0b
    https://github.com/scummvm/scummvm/commit/78c50a0f8923b0078ba8640a5a29f2cee0b10b0b
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-17T11:35:07+02:00

Commit Message:
DIRECTOR: Fix crashes on object destruction

Changed paths:
    engines/director/score.cpp



diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 6587270..79a60bf 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -892,8 +892,6 @@ Frame::Frame(const Frame &frame) {
 }
 
 Frame::~Frame() {
-	delete[] &_sprites;
-	delete[] &_drawRects;
 	delete _palette;
 }
 
@@ -1611,7 +1609,6 @@ Sprite::Sprite(const Sprite &sprite) {
 
 Sprite::~Sprite() {
 	delete _cast;
-	delete &_startPoint;
 }
 
 } //End of namespace Director


Commit: 556a5d572e108fdfd518bf998223c6959278e363
    https://github.com/scummvm/scummvm/commit/556a5d572e108fdfd518bf998223c6959278e363
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-17T11:35:24+02:00

Commit Message:
DIRECTOR: Plug memory leaks

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



diff --git a/engines/director/sound.cpp b/engines/director/sound.cpp
index 5f6d435..d6c78a5 100644
--- a/engines/director/sound.cpp
+++ b/engines/director/sound.cpp
@@ -36,6 +36,12 @@ DirectorSound::DirectorSound() {
 	_mixer = g_system->getMixer();
 }
 
+DirectorSound::~DirectorSound() {
+	delete _sound1;
+	delete _sound2;
+	delete _scriptSound;
+}
+
 void DirectorSound::playWAV(Common::String filename, uint8 soundChannel) {
 	Common::File *file = new Common::File();
 
diff --git a/engines/director/sound.h b/engines/director/sound.h
index 87a989c..4327b63 100644
--- a/engines/director/sound.h
+++ b/engines/director/sound.h
@@ -39,6 +39,7 @@ private:
 
 public:
 	DirectorSound();
+	~DirectorSound();
 
 	void playWAV(Common::String filename, uint8 channelID);
 	void playAIFF(Common::String filename, uint8 channelID);


Commit: 7702c62dfd29a75660d7709702d7ea7371629274
    https://github.com/scummvm/scummvm/commit/7702c62dfd29a75660d7709702d7ea7371629274
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-17T11:36:09+02:00

Commit Message:
DIRECTOR: Add missing break in switch statement

Changed paths:
    engines/director/score.cpp



diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 79a60bf..bd3def5 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -975,6 +975,7 @@ void Frame::readMainChannels(Common::SeekableSubReadStreamEndian &stream, uint16
 			if (stream.readUint16())
 				readPaletteInfo(stream);
 			offset += 16;
+			break;
 		default:
 			offset++;
 			stream.readByte();


Commit: b01a58e82cd06e77533ae9209f9956ac6775127f
    https://github.com/scummvm/scummvm/commit/b01a58e82cd06e77533ae9209f9956ac6775127f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-17T11:39:42+02:00

Commit Message:
DIRECTOR: Fix memory override

Changed paths:
    engines/director/dib.cpp
    engines/director/score.cpp



diff --git a/engines/director/dib.cpp b/engines/director/dib.cpp
index 8c54ba5..04665e7 100644
--- a/engines/director/dib.cpp
+++ b/engines/director/dib.cpp
@@ -62,7 +62,7 @@ void DIBDecoder::loadPalette(Common::SeekableReadStream &stream) {
 	uint16 steps = stream.size() / 6;
 	uint16 index = (steps * 3) - 1;
 	_paletteColorCount = steps;
-	_palette = new byte[index];
+	_palette = new byte[index + 1];
 
 	for (uint8 i = 0; i < steps; i++) {
 		_palette[index - 2] = stream.readByte();
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index bd3def5..7a2f8f7 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -201,7 +201,7 @@ void Score::loadPalette(Common::SeekableSubReadStreamEndian &stream) {
 	uint16 steps = stream.size() / 6;
 	uint16 index = (steps * 3) - 1;
 	uint16 _paletteColorCount = steps;
-	byte *_palette = new byte[index];
+	byte *_palette = new byte[index + 1];
 
 	for (uint8 i = 0; i < steps; i++) {
 		_palette[index - 2] = stream.readByte();


Commit: 873527ff5e3adb553b7df6efa97ac7625719ee87
    https://github.com/scummvm/scummvm/commit/873527ff5e3adb553b7df6efa97ac7625719ee87
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-17T11:46:39+02:00

Commit Message:
DIRECTOR: Lingo: Fixed 'the' entity retrieval

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



diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index eb0bfc5..f3e0884 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -483,8 +483,8 @@ Datum Lingo::getTheCast(Datum &id1, int field) {
 		return d;
 	} else {
 		warning("The cast %d found", id);
-		return d;
 	}
+
 	cast = _vm->_currentScore->_casts[id];
 	castInfo = _vm->_currentScore->_castsInfo[id];
 


Commit: 8192027d1c9fb5b935c1279ebf2b66387fd44ab1
    https://github.com/scummvm/scummvm/commit/8192027d1c9fb5b935c1279ebf2b66387fd44ab1
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-17T11:46:47+02:00

Commit Message:
DIRECTOR: Fix another double free

Changed paths:
    engines/director/score.cpp



diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 7a2f8f7..2cdff84 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -188,9 +188,6 @@ Score::~Score() {
 	if (_movieArchive)
 		_movieArchive->close();
 
-	delete _surface;
-	delete _trailSurface;
-
 	delete _font;
 	delete _movieArchive;
 


Commit: 72619334c00e4f366101ac6de9e2238c2a0e4042
    https://github.com/scummvm/scummvm/commit/72619334c00e4f366101ac6de9e2238c2a0e4042
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-17T20:22:59+02:00

Commit Message:
DIRECTOR: Lingo: Added missing break

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



diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index f3e0884..760576e 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -325,6 +325,7 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
 		break;
 	case kTheCast:
 		d = getTheCast(id, field);
+		break;
 	case kThePerFrameHook:
 		warning("STUB: getting the perframehook");
 		break;






More information about the Scummvm-git-logs mailing list