[Scummvm-git-logs] scummvm master -> 0b755ee54dddb3c05e8f737585ecf6efb6862d42
sev-
sev at scummvm.org
Fri Apr 17 21:59:08 UTC 2020
This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
b6d8d56fcd DIRECTOR: LINGO: Do not die on 2 and 3 arguments puppetSound
8f48430d39 DIRECTOR: LINGO: Check score presence in Lingo::getTheCast()
aee1577792 DIRECTOR: LINGO: Correctly process SYMBOL in varAssign and varFetch
0b755ee54d DIRECTOR: LINGO: Correctly process empty strings in b_numberofwords()
Commit: b6d8d56fcd8779cf3b1303631ae455ab581d105c
https://github.com/scummvm/scummvm/commit/b6d8d56fcd8779cf3b1303631ae455ab581d105c
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-04-17T23:58:35+02:00
Commit Message:
DIRECTOR: LINGO: Do not die on 2 and 3 arguments puppetSound
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 63693eda2a..e5c4764581 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -1464,7 +1464,7 @@ void LB::b_puppetPalette(int nargs) {
void LB::b_puppetSound(int nargs) {
if (nargs != 1) {
- error("b_puppetSound: expected 1 argument, got %d", nargs);
+ warning("STUB: b_puppetSound: more than 1 argument, got %d", nargs);
g_lingo->dropStack(nargs);
return;
}
Commit: 8f48430d39ba839b3b73ff380b0a0251f472c62f
https://github.com/scummvm/scummvm/commit/8f48430d39ba839b3b73ff380b0a0251f472c62f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-04-17T23:58:35+02:00
Commit Message:
DIRECTOR: LINGO: Check score presence in Lingo::getTheCast()
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 79f4e5a3da..d070956d67 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -736,6 +736,11 @@ Datum Lingo::getTheCast(Datum &id1, int field) {
// Setting default type
d.type = INT;
+ if (!score) {
+ warning("Lingo::getTheCast(): No cast loaded");
+ return d;
+ }
+
CastType castType;
CastInfo *castInfo;
if (id > score->_castIDoffset) {
Commit: aee1577792777dacc22c9b6e025d23e1061fc13a
https://github.com/scummvm/scummvm/commit/aee1577792777dacc22c9b6e025d23e1061fc13a
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-04-17T23:58:36+02:00
Commit Message:
DIRECTOR: LINGO: Correctly process SYMBOL in varAssign and varFetch
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 55f501e84e..292b296e8f 100644
--- a/engines/director/lingo/lingo-codegen.cpp
+++ b/engines/director/lingo/lingo-codegen.cpp
@@ -555,7 +555,7 @@ void Lingo::varAssign(Datum &var, Datum &value) {
sym->u.farr = new DatumArray(*value.u.farr);
delete value.u.farr;
} else if (value.type == SYMBOL) {
- sym->u.i = value.u.i;
+ sym->u.s = value.u.s;
} else if (value.type == OBJECT) {
sym->u.s = value.u.s;
} else if (value.type == VOID) {
@@ -620,7 +620,7 @@ Datum Lingo::varFetch(Datum &var) {
else if (sym->type == POINT)
result.u.farr = sym->u.farr;
else if (sym->type == SYMBOL)
- result.u.i = var.u.sym->u.i;
+ result.u.s = var.u.sym->u.s;
else if (sym->type == VOID)
result.u.i = 0;
else if (sym->type == ARRAY) {
Commit: 0b755ee54dddb3c05e8f737585ecf6efb6862d42
https://github.com/scummvm/scummvm/commit/0b755ee54dddb3c05e8f737585ecf6efb6862d42
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-04-17T23:58:36+02:00
Commit Message:
DIRECTOR: LINGO: Correctly process empty strings in b_numberofwords()
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 e5c4764581..44ef9e5409 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -2043,6 +2043,14 @@ void LB::b_numberofwords(int nargs) {
d.makeString();
int numberofwords = 0;
Common::String contents = *d.u.s;
+ if (contents.empty()) {
+ d.u.i = 0;
+ d.type = INT;
+
+ g_lingo->push(d);
+
+ return;
+ }
for (uint32 i = 1; i < d.u.s->size(); i++) {
if (Common::isSpace(contents[i]) && !Common::isSpace(contents[i - 1]))
numberofwords++;
More information about the Scummvm-git-logs
mailing list