aboutsummaryrefslogtreecommitdiff
path: root/engines/parallaction/disk.cpp
diff options
context:
space:
mode:
authorNicola Mettifogo2007-03-04 15:09:45 +0000
committerNicola Mettifogo2007-03-04 15:09:45 +0000
commit20da7f80f1765bc4b2adb685cde76377ccbb0350 (patch)
tree030f0f9420187c207e46a8ce523fdb60e4d65e2c /engines/parallaction/disk.cpp
parent1c00cc5dc56329debd2d3e3538155f097e96756c (diff)
downloadscummvm-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.cpp23
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) {