[Scummvm-cvs-logs] SF.net SVN: scummvm: [25973] scummvm/trunk/engines/parallaction

peres001 at users.sourceforge.net peres001 at users.sourceforge.net
Sun Mar 4 16:00:52 CET 2007


Revision: 25973
          http://scummvm.svn.sourceforge.net/scummvm/?rev=25973&view=rev
Author:   peres001
Date:     2007-03-04 07:00:50 -0800 (Sun, 04 Mar 2007)

Log Message:
-----------
made Script optionally take ownership and dispose input text

Modified Paths:
--------------
    scummvm/trunk/engines/parallaction/parser.cpp
    scummvm/trunk/engines/parallaction/parser.h

Modified: scummvm/trunk/engines/parallaction/parser.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/parser.cpp	2007-03-04 13:27:29 UTC (rev 25972)
+++ scummvm/trunk/engines/parallaction/parser.cpp	2007-03-04 15:00:50 UTC (rev 25973)
@@ -29,8 +29,13 @@
 
 char			_tokens[20][40];
 
-Script::Script(const char* s) : _src(s) {
+Script::Script(const char* s, bool disposeSource) : _src(s), _disposeSource(disposeSource) {
+	_pos = const_cast<char*>(_src);
+}
 
+Script::~Script() {
+	if (_disposeSource)
+		free(const_cast<char*>(_src));
 }
 
 char *Script::readLine(char *buf, size_t bufSize) {
@@ -39,7 +44,7 @@
 	char v2 = 0;
 	for ( _si = 0; _si<bufSize; _si++) {
 
-		v2 = *_src++;
+		v2 = *_pos++;
 		if (v2 == 0xA || v2 == -1) break;
 		if (v2 != -1 && _si < bufSize) buf[_si] = v2;
 	}

Modified: scummvm/trunk/engines/parallaction/parser.h
===================================================================
--- scummvm/trunk/engines/parallaction/parser.h	2007-03-04 13:27:29 UTC (rev 25972)
+++ scummvm/trunk/engines/parallaction/parser.h	2007-03-04 15:00:50 UTC (rev 25973)
@@ -37,10 +37,13 @@
 
 class Script : public Common::SeekableReadStream {
 
-	const char*	_src;
+	const char*	const _src;
+	bool	_disposeSource;
+	char*	_pos;
 
 public:
-	Script(const char* s);
+	Script(const char* s, bool _disposeSource = false);
+	~Script();
 
 	uint32 read(void *dataPtr, uint32 dataSize);
 


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list