aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm
diff options
context:
space:
mode:
authorMax Horn2010-10-18 18:56:40 +0000
committerMax Horn2010-10-18 18:56:40 +0000
commitcda2c950d64c660a30d0e9d8ec9b5923a26545d3 (patch)
treee87f759a38de563475bbd86d63719755ea00c98f /engines/scumm
parent32f1a9ad8bd31ebdd786c78c0234bf6a4e46d138 (diff)
downloadscummvm-rg350-cda2c950d64c660a30d0e9d8ec9b5923a26545d3.tar.gz
scummvm-rg350-cda2c950d64c660a30d0e9d8ec9b5923a26545d3.tar.bz2
scummvm-rg350-cda2c950d64c660a30d0e9d8ec9b5923a26545d3.zip
SCUMM: Simplify SO_LOAD_STRING code
svn-id: r53574
Diffstat (limited to 'engines/scumm')
-rw-r--r--engines/scumm/script_v5.cpp18
1 files changed, 6 insertions, 12 deletions
diff --git a/engines/scumm/script_v5.cpp b/engines/scumm/script_v5.cpp
index 6d4072706c..d3e1ba43ef 100644
--- a/engines/scumm/script_v5.cpp
+++ b/engines/scumm/script_v5.cpp
@@ -1840,18 +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);
- assert(ptr);
- }
- 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;