[Scummvm-git-logs] scummvm master -> abb4b988adf8fbf40c3e0d1245f65c93658eaaff

sev- noreply at scummvm.org
Tue Jul 18 11:09:08 UTC 2023


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:
bf3f43ef64 DIRECTOR: LINGO: `b_scummvmassertequal` working for arrays
abb4b988ad DIRECTOR: Fix memory leaks when using `b_move` and lingotests


Commit: bf3f43ef6474c044923b29af5ed89bd0541170b0
    https://github.com/scummvm/scummvm/commit/bf3f43ef6474c044923b29af5ed89bd0541170b0
Author: Harishankar Kumar (hari01584 at gmail.com)
Date: 2023-07-18T13:09:03+02:00

Commit Message:
DIRECTOR: LINGO: `b_scummvmassertequal` working for arrays

Initially `b_scummvmassertequal` was not working for arrays comparison
thus the test was failing. Now it is working and the tests are passing.

-p ./engines/director/lingo/tests/ --start-movie=sort.lingo directortest

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


diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index e675af4a5b0..e19ec407626 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -3283,7 +3283,14 @@ void LB::b_scummvmassertequal(int nargs) {
 	Datum d2 = g_lingo->pop();
 	Datum d1 = g_lingo->pop();
 
-	int result = (d1 == d2);
+	int result;
+
+	if (d1.type == ARRAY && d2.type == ARRAY) {
+		result = LC::eqData(d1, d2).u.i;
+	} else {
+		result = (d1 == d2);
+	}
+
 	if (!result) {
 		warning("BUILDBOT: LB::b_scummvmassertequals: %s is not equal %s at line %d", d1.asString().c_str(), d2.asString().c_str(), line.asInt());
 	}


Commit: abb4b988adf8fbf40c3e0d1245f65c93658eaaff
    https://github.com/scummvm/scummvm/commit/abb4b988adf8fbf40c3e0d1245f65c93658eaaff
Author: Harishankar Kumar (hari01584 at gmail.com)
Date: 2023-07-18T13:09:03+02:00

Commit Message:
DIRECTOR: Fix memory leaks when using `b_move` and lingotests

Fixed memory leaks in `builtin.lingo` where the problem was due
to not deleting existing cast member before replacing it inside
`createOrReplaceCastMember`, the lingo instruction `move cast 1,3`
was having problems.

-p ./engines/director/lingo/tests/ --start-movie=builtin.lingo directortest

Changed paths:
    engines/director/movie.cpp


diff --git a/engines/director/movie.cpp b/engines/director/movie.cpp
index 6c0b528dc33..bf41be2be10 100644
--- a/engines/director/movie.cpp
+++ b/engines/director/movie.cpp
@@ -411,6 +411,9 @@ CastMember* Movie::createOrReplaceCastMember(CastMemberID memberID, CastMember*
 	CastMember *result = nullptr;
 
 	if (_casts.contains(memberID.castLib)) {
+		// Delete existing cast member
+		_casts.getVal(memberID.castLib)->eraseCastMember(memberID);
+
 		_casts.getVal(memberID.castLib)->setCastMember(memberID, cast);
 	}
 




More information about the Scummvm-git-logs mailing list