[Scummvm-git-logs] scummvm master -> a8f082433fe3926123003525df1a00cf1874ab7a
neuromancer
noreply at scummvm.org
Mon Nov 3 16:58:06 UTC 2025
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
a8f082433f PRIVATE: Fix duplicate dossier sheets
Commit: a8f082433fe3926123003525df1a00cf1874ab7a
https://github.com/scummvm/scummvm/commit/a8f082433fe3926123003525df1a00cf1874ab7a
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2025-11-03T17:58:01+01:00
Commit Message:
PRIVATE: Fix duplicate dossier sheets
Bug #15854
Changed paths:
engines/private/funcs.cpp
engines/private/private.cpp
engines/private/private.h
diff --git a/engines/private/funcs.cpp b/engines/private/funcs.cpp
index 7df609694bd..d9f0ca5b1e0 100644
--- a/engines/private/funcs.cpp
+++ b/engines/private/funcs.cpp
@@ -269,20 +269,15 @@ static void fBustMovie(ArgArray args) {
}
static void fDossierAdd(ArgArray args) {
-
assert(args.size() == 2);
Common::String s1 = args[0].u.str;
Common::String s2 = args[1].u.str;
- DossierInfo m;
- m.page1 = s1;
- if (s2 != "\"\"") {
- m.page2 = s2;
- } else {
- m.page2 = "";
+ if (s2 == "\"\"") {
+ s2 = "";
}
- g_private->_dossiers.push_back(m);
+ g_private->addDossier(s1, s2);
}
static void fDossierBitmap(ArgArray args) {
diff --git a/engines/private/private.cpp b/engines/private/private.cpp
index aed66fb7f9a..dc5ba338d70 100644
--- a/engines/private/private.cpp
+++ b/engines/private/private.cpp
@@ -1032,6 +1032,21 @@ void PrivateEngine::selectPhoneArea(Common::Point mousePos) {
}
}
+void PrivateEngine::addDossier(Common::String &page1, Common::String &page2) {
+ // Each dossier page can only be added once.
+ // Do this even when loading games to fix saves with duplicates.
+ for (uint i = 0; i < _dossiers.size(); i++) {
+ if (_dossiers[i].page1 == page1) {
+ return;
+ }
+ }
+
+ DossierInfo d;
+ d.page1 = page1;
+ d.page2 = page2;
+ _dossiers.push_back(d);
+}
+
void PrivateEngine::loadDossier() {
int x = 40;
int y = 30;
@@ -1285,11 +1300,10 @@ Common::Error PrivateEngine::loadGameStream(Common::SeekableReadStream *stream)
// Dossiers
_dossiers.clear();
size = stream->readUint32LE();
- DossierInfo m;
for (uint32 i = 0; i < size; ++i) {
- m.page1 = stream->readString();
- m.page2 = stream->readString();
- _dossiers.push_back(m);
+ Common::String page1 = stream->readString();
+ Common::String page2 = stream->readString();
+ addDossier(page1, page2);
}
// Radios
diff --git a/engines/private/private.h b/engines/private/private.h
index dccf5d210d1..eef3b4f5b5b 100644
--- a/engines/private/private.h
+++ b/engines/private/private.h
@@ -292,6 +292,7 @@ public:
bool selectDossierPrevSuspect(Common::Point);
bool selectDossierNextSheet(Common::Point);
bool selectDossierPrevSheet(Common::Point);
+ void addDossier(Common::String &page1, Common::String &page2);
void loadDossier();
// Police Bust
More information about the Scummvm-git-logs
mailing list