diff options
| -rw-r--r-- | engines/sci/console.cpp | 2 | ||||
| -rw-r--r-- | engines/sci/engine/features.cpp | 14 | ||||
| -rw-r--r-- | engines/sci/engine/kernel.cpp | 2 | ||||
| -rw-r--r-- | engines/sci/engine/kscripts.cpp | 2 | ||||
| -rw-r--r-- | engines/sci/engine/savegame.cpp | 8 | ||||
| -rw-r--r-- | engines/sci/engine/script.cpp | 8 | ||||
| -rw-r--r-- | engines/sci/engine/scriptdebug.cpp | 4 | ||||
| -rw-r--r-- | engines/sci/engine/seg_manager.cpp | 2 | ||||
| -rw-r--r-- | engines/sci/engine/segment.h | 13 | ||||
| -rw-r--r-- | engines/sci/engine/vm.cpp | 6 | 
10 files changed, 33 insertions, 28 deletions
diff --git a/engines/sci/console.cpp b/engines/sci/console.cpp index 1f61dff12b..6965ca0ece 100644 --- a/engines/sci/console.cpp +++ b/engines/sci/console.cpp @@ -1245,7 +1245,7 @@ bool Console::segmentInfo(int nr) {  	case SEG_TYPE_SCRIPT: {  		Script *scr = (Script *)mobj; -		DebugPrintf("script.%03d locked by %d, bufsize=%d (%x)\n", scr->_nr, scr->getLockers(), (uint)scr->_bufSize, (uint)scr->_bufSize); +		DebugPrintf("script.%03d locked by %d, bufsize=%d (%x)\n", scr->_nr, scr->getLockers(), (uint)scr->getBufSize(), (uint)scr->getBufSize());  		if (scr->_exportTable)  			DebugPrintf("  Exports: %4d at %d\n", scr->_numExports, (int)(((const byte *)scr->_exportTable) - ((const byte *)scr->_buf)));  		else diff --git a/engines/sci/engine/features.cpp b/engines/sci/engine/features.cpp index 1539b3d190..3ad5630670 100644 --- a/engines/sci/engine/features.cpp +++ b/engines/sci/engine/features.cpp @@ -87,7 +87,7 @@ bool GameFeatures::autoDetectSoundType() {  		opcode = extOpcode >> 1;  		// Check for end of script -		if (opcode == op_ret || offset >= script->_bufSize) +		if (opcode == op_ret || offset >= script->getBufSize())  			break;  		// The play method of the Sound object pushes the DoSound command @@ -223,7 +223,7 @@ bool GameFeatures::autoDetectLofsType(int methodNum) {  		opcode = extOpcode >> 1;  		// Check for end of script -		if (opcode == op_ret || offset >= script->_bufSize) +		if (opcode == op_ret || offset >= script->getBufSize())  			break;  		if (opcode == op_lofsa || opcode == op_lofss) { @@ -231,13 +231,13 @@ bool GameFeatures::autoDetectLofsType(int methodNum) {  			uint16 lofs = opparams[0];  			// Check for going out of bounds when interpreting as abs/rel -			if (lofs >= script->_bufSize) +			if (lofs >= script->getBufSize())  				_lofsType = SCI_VERSION_0_EARLY;  			if ((signed)offset + (int16)lofs < 0)  				_lofsType = SCI_VERSION_1_MIDDLE; -			if ((signed)offset + (int16)lofs >= (signed)script->_bufSize) +			if ((signed)offset + (int16)lofs >= (signed)script->getBufSize())  				_lofsType = SCI_VERSION_1_MIDDLE;  			if (_lofsType != SCI_VERSION_NONE) @@ -309,7 +309,7 @@ bool GameFeatures::autoDetectGfxFunctionsType(int methodNum) {  		opcode = extOpcode >> 1;  		// Check for end of script -		if (opcode == op_ret || offset >= script->_bufSize) +		if (opcode == op_ret || offset >= script->getBufSize())  			break;  		if (opcode == op_callk) { @@ -412,7 +412,7 @@ bool GameFeatures::autoDetectSci21KernelType() {  		opcode = extOpcode >> 1;  		// Check for end of script -		if (opcode == op_ret || offset >= script->_bufSize) +		if (opcode == op_ret || offset >= script->getBufSize())  			break;  		if (opcode == op_callk) { @@ -465,7 +465,7 @@ bool GameFeatures::autoDetectMoveCountType() {  		opcode = extOpcode >> 1;  		// Check for end of script -		if (opcode == op_ret || offset >= script->_bufSize) +		if (opcode == op_ret || offset >= script->getBufSize())  			break;  		if (opcode == op_callk) { diff --git a/engines/sci/engine/kernel.cpp b/engines/sci/engine/kernel.cpp index ae3d30e81d..0b7198d1bc 100644 --- a/engines/sci/engine/kernel.cpp +++ b/engines/sci/engine/kernel.cpp @@ -628,7 +628,7 @@ int Kernel::findRegType(reg_t reg) {  	switch (mobj->getType()) {  	case SEG_TYPE_SCRIPT: -		if (reg.offset <= (*(Script *)mobj)._bufSize && +		if (reg.offset <= (*(Script *)mobj).getBufSize() &&  			reg.offset >= -SCRIPT_OBJECT_MAGIC_OFFSET &&  		    RAW_IS_OBJECT((*(Script *)mobj)._buf + reg.offset)) {  			return ((Script *)mobj)->getObject(reg.offset) ? KSIG_OBJECT : KSIG_REF; diff --git a/engines/sci/engine/kscripts.cpp b/engines/sci/engine/kscripts.cpp index aec467bd54..d5a0c225d6 100644 --- a/engines/sci/engine/kscripts.cpp +++ b/engines/sci/engine/kscripts.cpp @@ -208,7 +208,7 @@ reg_t kScriptID(EngineState *s, int argc, reg_t *argv) {  	// Point to the heap for SCI1.1+ games  	if (getSciVersion() >= SCI_VERSION_1_1) -		address += scr->_scriptSize; +		address += scr->getScriptSize();  	return make_reg(scriptSeg, address);  } diff --git a/engines/sci/engine/savegame.cpp b/engines/sci/engine/savegame.cpp index eb52a888fa..363dc8a44a 100644 --- a/engines/sci/engine/savegame.cpp +++ b/engines/sci/engine/savegame.cpp @@ -758,22 +758,22 @@ static void reconstruct_stack(EngineState *retval) {  }  static void load_script(EngineState *s, Script *scr) { -	scr->_buf = (byte *)malloc(scr->_bufSize); +	scr->_buf = (byte *)malloc(scr->getBufSize());  	assert(scr->_buf);  	Resource *script = g_sci->getResMan()->findResource(ResourceId(kResourceTypeScript, scr->_nr), 0);  	assert(script != 0); -	assert(scr->_bufSize >= script->size); +	assert(scr->getBufSize() >= script->size);  	memcpy(scr->_buf, script->data, script->size);  	if (getSciVersion() >= SCI_VERSION_1_1) {  		Resource *heap = g_sci->getResMan()->findResource(ResourceId(kResourceTypeHeap, scr->_nr), 0);  		assert(heap != 0); -		scr->_heapStart = scr->_buf + scr->_scriptSize; +		scr->_heapStart = scr->_buf + scr->getScriptSize(); -		assert(scr->_bufSize - scr->_scriptSize <= heap->size); +		assert(scr->getBufSize() - scr->getScriptSize() <= heap->size);  		memcpy(scr->_heapStart, heap->data, heap->size);  	}  } diff --git a/engines/sci/engine/script.cpp b/engines/sci/engine/script.cpp index 051cb0d215..ab0ab69083 100644 --- a/engines/sci/engine/script.cpp +++ b/engines/sci/engine/script.cpp @@ -175,7 +175,7 @@ void SegManager::scriptInitialiseLocals(reg_t location) {  	Script *scr = getScript(location.segment);  	unsigned int count; -	VERIFY(location.offset + 1 < (uint16)scr->_bufSize, "Locals beyond end of script\n"); +	VERIFY(location.offset + 1 < (uint16)scr->getBufSize(), "Locals beyond end of script\n");  	if (getSciVersion() >= SCI_VERSION_1_1)  		count = READ_SCI11ENDIAN_UINT16(scr->_buf + location.offset - 2); @@ -185,9 +185,9 @@ void SegManager::scriptInitialiseLocals(reg_t location) {  	scr->_localsOffset = location.offset; -	if (!(location.offset + count * 2 + 1 < scr->_bufSize)) { -		warning("Locals extend beyond end of script: offset %04x, count %x vs size %x", location.offset, count, (uint)scr->_bufSize); -		count = (scr->_bufSize - location.offset) >> 1; +	if (!(location.offset + count * 2 + 1 < scr->getBufSize())) { +		warning("Locals extend beyond end of script: offset %04x, count %x vs size %x", location.offset, count, (uint)scr->getBufSize()); +		count = (scr->getBufSize() - location.offset) >> 1;  	}  	LocalVariables *locals = allocLocalsSegment(scr, count); diff --git a/engines/sci/engine/scriptdebug.cpp b/engines/sci/engine/scriptdebug.cpp index 4468d376ea..103a016972 100644 --- a/engines/sci/engine/scriptdebug.cpp +++ b/engines/sci/engine/scriptdebug.cpp @@ -85,7 +85,7 @@ reg_t disassemble(EngineState *s, reg_t pos, int print_bw_tag, int print_bytecod  		script_entity = (Script *)mobj;  	scr = script_entity->_buf; -	scr_size = script_entity->_bufSize; +	scr_size = script_entity->getBufSize();  	if (pos.offset >= scr_size) {  		warning("Trying to disassemble beyond end of script"); @@ -303,7 +303,7 @@ void script_debug(EngineState *s) {  		if (mobj) {  			Script *scr = (Script *)mobj;  			byte *code_buf = scr->_buf; -			int code_buf_size = scr->_bufSize; +			int code_buf_size = scr->getBufSize();  			int opcode = scriptState.xs->addr.pc.offset >= code_buf_size ? 0 : code_buf[scriptState.xs->addr.pc.offset];  			int op = opcode >> 1;  			int paramb1 = scriptState.xs->addr.pc.offset + 1 >= code_buf_size ? 0 : code_buf[scriptState.xs->addr.pc.offset + 1]; diff --git a/engines/sci/engine/seg_manager.cpp b/engines/sci/engine/seg_manager.cpp index bc64c56e71..92eb1c4717 100644 --- a/engines/sci/engine/seg_manager.cpp +++ b/engines/sci/engine/seg_manager.cpp @@ -223,7 +223,7 @@ Object *SegManager::getObject(reg_t pos) {  				warning("getObject(): Trying to get an invalid object");  		} else if (mobj->getType() == SEG_TYPE_SCRIPT) {  			Script *scr = (Script *)mobj; -			if (pos.offset <= scr->_bufSize && pos.offset >= -SCRIPT_OBJECT_MAGIC_OFFSET +			if (pos.offset <= scr->getBufSize() && pos.offset >= -SCRIPT_OBJECT_MAGIC_OFFSET  			        && RAW_IS_OBJECT(scr->_buf + pos.offset)) {  				obj = scr->getObject(pos.offset);  			} diff --git a/engines/sci/engine/segment.h b/engines/sci/engine/segment.h index 0b4e6bb665..06d53158ce 100644 --- a/engines/sci/engine/segment.h +++ b/engines/sci/engine/segment.h @@ -323,10 +323,6 @@ class Script : public SegmentObj {  public:  	int _nr; /**< Script number */  	byte *_buf; /**< Static data buffer, or NULL if not used */ -	size_t _bufSize; -	size_t _scriptSize; -	size_t _heapSize; -  	byte *_heapStart; /**< Start of heap if SCI1.1, NULL otherwise */  	const uint16 *_exportTable; /**< Abs. offset of the export table or 0 if not present */ @@ -335,9 +331,18 @@ public:  	const byte *_synonyms; /**< Synonyms block or 0 if not present*/  	int _numSynonyms; /**< Number of entries in the synonyms block */ +	uint32 getScriptSize() { return _scriptSize; } +	uint32 getHeapSize() { return _heapSize; } +	uint32 getBufSize() { return _bufSize; } +  protected:  	int _lockers; /**< Number of classes and objects that require this script */ +private: +	size_t _scriptSize; +	size_t _heapSize; +	size_t _bufSize; +  public:  	/**  	 * Table for objects, contains property variables. diff --git a/engines/sci/engine/vm.cpp b/engines/sci/engine/vm.cpp index 1973693f1e..03d67ae451 100644 --- a/engines/sci/engine/vm.cpp +++ b/engines/sci/engine/vm.cpp @@ -784,7 +784,7 @@ void run_vm(EngineState *s, bool restoring) {  				obj = s->_segMan->getObject(scriptState.xs->objp);  				code_buf = scr->_buf;  #ifndef DISABLE_VALIDATIONS -				code_buf_size = scr->_bufSize; +				code_buf_size = scr->getBufSize();  #endif  				local_script = s->_segMan->getScriptIfLoaded(scriptState.xs->local_segment);  				if (!local_script) { @@ -1398,7 +1398,7 @@ void run_vm(EngineState *s, bool restoring) {  			switch (g_sci->_features->detectLofsType()) {  			case SCI_VERSION_1_1: -				s->r_acc.offset = opparams[0] + local_script->_scriptSize; +				s->r_acc.offset = opparams[0] + local_script->getScriptSize();  				break;  			case SCI_VERSION_1_MIDDLE:  				s->r_acc.offset = opparams[0]; @@ -1420,7 +1420,7 @@ void run_vm(EngineState *s, bool restoring) {  			switch (g_sci->_features->detectLofsType()) {  			case SCI_VERSION_1_1: -				r_temp.offset = opparams[0] + local_script->_scriptSize; +				r_temp.offset = opparams[0] + local_script->getScriptSize();  				break;  			case SCI_VERSION_1_MIDDLE:  				r_temp.offset = opparams[0];  | 
