[Scummvm-git-logs] scummvm master -> 5370377943a899882def15c61c3e7aaadfb572e0

sev- sev at scummvm.org
Thu Feb 9 11:44:46 CET 2017


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

Summary:
73cf9721e3 DIRECTOR: Lingo: Fix double free in local vars
5370377943 DIRECTOR: Lingo: Fix global symbol processing


Commit: 73cf9721e30312d43f51f5a05b8db825c8d805fd
    https://github.com/scummvm/scummvm/commit/73cf9721e30312d43f51f5a05b8db825c8d805fd
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-02-09T09:11:54+01:00

Commit Message:
DIRECTOR: Lingo: Fix double free in local vars

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 04310d9..53f3a5a 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -1137,8 +1137,6 @@ void Lingo::c_global() {
 	s->global = true;
 
 	g_lingo->_pc += g_lingo->calcStringAlignment(name.c_str());
-
-	delete s;
 }
 
 void Lingo::c_property() {


Commit: 5370377943a899882def15c61c3e7aaadfb572e0
    https://github.com/scummvm/scummvm/commit/5370377943a899882def15c61c3e7aaadfb572e0
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-02-09T09:23:13+01:00

Commit Message:
DIRECTOR: Lingo: Fix global symbol processing

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


diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index 53f3a5a..7ab69c0 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -341,7 +341,7 @@ void Lingo::c_assign() {
 }
 
 bool Lingo::verify(Symbol *s) {
-	if (s->type != INT && s->type != VOID && s->type != FLOAT && s->type != STRING && s->type != POINT) {
+	if (s->type != INT && s->type != VOID && s->type != FLOAT && s->type != STRING && s->type != POINT && s->type != SYMBOL) {
 		warning("attempt to evaluate non-variable '%s'", s->name.c_str());
 
 		return false;
diff --git a/engines/director/lingo/lingo-codegen.cpp b/engines/director/lingo/lingo-codegen.cpp
index 94fe706..9550167 100644
--- a/engines/director/lingo/lingo-codegen.cpp
+++ b/engines/director/lingo/lingo-codegen.cpp
@@ -166,6 +166,10 @@ Symbol *Lingo::lookupVar(const char *name, bool create, bool putInGlobalList) {
 	}
 
 	if (!_localvars || !_localvars->contains(name)) { // Create variable if it was not defined
+		// Check if it is a global symbol
+		if (_globalvars.contains(name) && _globalvars[name]->type == SYMBOL)
+			return _globalvars[name];
+
 		if (!create)
 			return NULL;
 





More information about the Scummvm-git-logs mailing list