diff options
author | Filippos Karapetis | 2013-10-30 08:39:20 +0200 |
---|---|---|
committer | Filippos Karapetis | 2013-10-30 08:47:46 +0200 |
commit | 82b52fc644f0af791c23e9fddace0256d82ca3b6 (patch) | |
tree | 91928015d457f70f55cdc1aedb4ac9643b0c5b15 /engines/sci | |
parent | 27281d15666e0217b7235413c4ecdac10d3c5de0 (diff) | |
download | scummvm-rg350-82b52fc644f0af791c23e9fddace0256d82ca3b6.tar.gz scummvm-rg350-82b52fc644f0af791c23e9fddace0256d82ca3b6.tar.bz2 scummvm-rg350-82b52fc644f0af791c23e9fddace0256d82ca3b6.zip |
SCI: Handle objects with a dot in their name
An example is the object 'dominoes.opt' in Hoyle 3, script 101
Diffstat (limited to 'engines/sci')
-rw-r--r-- | engines/sci/console.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/engines/sci/console.cpp b/engines/sci/console.cpp index 50fae61de0..80d8ab8257 100644 --- a/engines/sci/console.cpp +++ b/engines/sci/console.cpp @@ -3840,10 +3840,15 @@ static int parse_reg_t(EngineState *s, const char *str, reg_t *dest, bool mayBeV const char *tmp = Common::find(str_objname.begin(), str_objname.end(), '.'); if (tmp != str_objname.end()) { index = strtol(tmp + 1, &endptr, 16); - if (*endptr) - return -1; - // Chop off the index - str_objname = Common::String(str_objname.c_str(), tmp); + if (*endptr) { + // The characters after the dot do not represent an index. + // This can happen if an object contains a dot in its name, + // like 'dominoes.opt' in Hoyle 3. + index = -1; + } else { + // Valid index found, chop it off + str_objname = Common::String(str_objname.c_str(), tmp); + } } // Replace all underscores in the name with spaces |