diff options
author | Nicola Mettifogo | 2007-03-04 15:09:45 +0000 |
---|---|---|
committer | Nicola Mettifogo | 2007-03-04 15:09:45 +0000 |
commit | 20da7f80f1765bc4b2adb685cde76377ccbb0350 (patch) | |
tree | 030f0f9420187c207e46a8ce523fdb60e4d65e2c /engines/parallaction/disk.cpp | |
parent | 1c00cc5dc56329debd2d3e3538155f097e96756c (diff) | |
download | scummvm-rg350-20da7f80f1765bc4b2adb685cde76377ccbb0350.tar.gz scummvm-rg350-20da7f80f1765bc4b2adb685cde76377ccbb0350.tar.bz2 scummvm-rg350-20da7f80f1765bc4b2adb685cde76377ccbb0350.zip |
made loadScript and loadLocation benefit from Script's ability to dispose of its input buffer
svn-id: r25976
Diffstat (limited to 'engines/parallaction/disk.cpp')
-rw-r--r-- | engines/parallaction/disk.cpp | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/engines/parallaction/disk.cpp b/engines/parallaction/disk.cpp index 513afa2739..d7845eca2a 100644 --- a/engines/parallaction/disk.cpp +++ b/engines/parallaction/disk.cpp @@ -205,7 +205,7 @@ void Disk::loadTalk(const char *name, Cnv *cnv) { } -void Disk::loadLocation(const char *name, char* script) { +Script* Disk::loadLocation(const char *name) { char archivefile[PATH_LEN]; @@ -232,14 +232,16 @@ void Disk::loadLocation(const char *name, char* script) { error("can't find location file '%s'", name); } - uint32 count = _archive.size(); - _archive.read(script, count); - _archive.closeArchivedFile(); - _archive.close(); + uint32 size = _archive.size(); + char *buf = (char*)malloc(size+1); + _archive.read(buf, size); + buf[size] = '\0'; + + return new Script(buf, true); } -void Disk::loadScript(const char* name, char *script) { +Script* Disk::loadScript(const char* name) { char vC8[PATH_LEN]; @@ -249,12 +251,11 @@ void Disk::loadScript(const char* name, char *script) { errorFileNotFound(vC8); uint32 size = _archive.size(); + char *buf = (char*)malloc(size+1); + _archive.read(buf, size); + buf[size] = '\0'; - _archive.read(script, size); - script[size] = '\0'; - - _archive.closeArchivedFile(); - + return new Script(buf, true); } void Disk::loadHead(const char* name, StaticCnv* cnv) { |