diff options
Diffstat (limited to 'engines/scumm/script_v5.cpp')
-rw-r--r-- | engines/scumm/script_v5.cpp | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/engines/scumm/script_v5.cpp b/engines/scumm/script_v5.cpp index ea903fc108..d3e1ba43ef 100644 --- a/engines/scumm/script_v5.cpp +++ b/engines/scumm/script_v5.cpp @@ -1840,17 +1840,12 @@ void ScummEngine_v5::o5_roomOps() { Common::InSaveFile *file = _saveFileMan->openForLoading(filename); if (file != NULL) { byte *ptr; - int len = 256, cnt = 0; - ptr = (byte *)malloc(len); - while (ptr) { - int r = file->read(ptr + cnt, len - cnt); - cnt += r; - if (cnt < len) - break; - len *= 2; - ptr = (byte *)realloc(ptr, len); - } - ptr[cnt] = '\0'; + const int len = file->size(); + ptr = (byte *)malloc(len + 1); + assert(ptr); + int r = file->read(ptr, len); + assert(r == len); + ptr[len] = '\0'; loadPtrToResource(rtString, a, ptr); free(ptr); delete file; @@ -2156,6 +2151,7 @@ void ScummEngine_v5::o5_stringOps() { case 2: /* copystring */ a = getVarOrDirectByte(PARAM_1); b = getVarOrDirectByte(PARAM_2); + assert(a != b); _res->nukeResource(rtString, a); ptr = getResourceAddress(rtString, b); if (ptr) |