[Scummvm-git-logs] scummvm master -> 7b58493fadce30fc6bfd230bbd42868796eb851b

djsrv dservilla at gmail.com
Fri Aug 14 23:06:49 UTC 2020


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

Summary:
7b58493fad DIRECTOR: LINGO: Fix using cast ref as var


Commit: 7b58493fadce30fc6bfd230bbd42868796eb851b
    https://github.com/scummvm/scummvm/commit/7b58493fadce30fc6bfd230bbd42868796eb851b
Author: djsrv (dservilla at gmail.com)
Date: 2020-08-14T19:03:11-04:00

Commit Message:
DIRECTOR: LINGO: Fix using cast ref as var

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


diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index 2ec6be87a5..cde9ec79a7 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -1289,10 +1289,10 @@ void Lingo::varAssign(Datum &var, Datum &value, bool global, DatumHash *localvar
 			warning("varAssign: Assigning to a reference to an empty movie");
 			return;
 		}
-		int referenceId = castIdFetch(var);
-		CastMember *member = g_director->getCurrentMovie()->getCastMember(referenceId);
+		int castId = castIdFetch(var);
+		CastMember *member = movie->getCastMember(castId);
 		if (!member) {
-			warning("varAssign: Unknown cast id %d", referenceId);
+			warning("varAssign: Unknown cast id %d", castId);
 			return;
 		}
 		switch (member->_type) {
@@ -1300,7 +1300,7 @@ void Lingo::varAssign(Datum &var, Datum &value, bool global, DatumHash *localvar
 			((TextCastMember *)member)->setText(value.asString().c_str());
 			break;
 		default:
-			warning("varAssign: Unhandled cast type %s", tag2str(member->_type));
+			warning("varAssign: Unhandled cast type %d", member->_type);
 			break;
 		}
 	}
@@ -1347,22 +1347,27 @@ Datum Lingo::varFetch(Datum &var, bool global, DatumHash *localvars, bool silent
 		if (!silent)
 			warning("varFetch: variable %s not found", name.c_str());
 		return result;
-	} else if (var.type == FIELDNAME || var.type == FIELDNUM) {
-		CastMember *cast = _vm->getCurrentMovie()->getCastMember(var.u.i);
-		if (cast) {
-			switch (cast->_type) {
-			case kCastText:
-				result.type = STRING;
-				result.u.s = new Common::String(((TextCastMember *)cast)->getText());
-				break;
-			default:
-				warning("varFetch: Unhandled cast type %s", tag2str(cast->_type));
-				break;
-			}
-		} else {
-			warning("varFetch: Unknown cast id %d", var.u.i);
+	} else if (var.type == FIELDNAME || var.type == FIELDNUM || var.type == CASTNAME || var.type == CASTNUM) {
+		Movie *movie = g_director->getCurrentMovie();
+		if (!movie) {
+			warning("varFetch: Assigning to a reference to an empty movie");
+			return result;
+		}
+		int castId = castIdFetch(var);
+		CastMember *member = movie->getCastMember(castId);
+		if (!member) {
+			warning("varFetch: Unknown cast id %d", castId);
+			return result;
+		}
+		switch (member->_type) {
+		case kCastText:
+			result.type = STRING;
+			result.u.s = new Common::String(((TextCastMember *)member)->getText());
+			break;
+		default:
+			warning("varFetch: Unhandled cast type %d", member->_type);
+			break;
 		}
-
 	}
 
 	return result;




More information about the Scummvm-git-logs mailing list