diff options
Diffstat (limited to 'engines/sci/engine/vm.cpp')
| -rw-r--r-- | engines/sci/engine/vm.cpp | 31 | 
1 files changed, 15 insertions, 16 deletions
| diff --git a/engines/sci/engine/vm.cpp b/engines/sci/engine/vm.cpp index 358a35613a..6f93da093e 100644 --- a/engines/sci/engine/vm.cpp +++ b/engines/sci/engine/vm.cpp @@ -199,24 +199,24 @@ int script_error(EngineState *s, const char *file, int line, const char *reason)  #define CORE_ERROR(area, msg) script_error(s, "[" area "] " __FILE__, __LINE__, msg)  reg_t get_class_address(EngineState *s, int classnr, int lock, reg_t caller) { -	Class *the_class = s->classtable + classnr;  	if (NULL == s) { -		sciprintf("vm.c: get_class_address(): NULL passed for \"s\"\n"); +		warning("vm.c: get_class_address(): NULL passed for \"s\"");  		return NULL_REG;  	} -	if (classnr < 0 || s->classtable_size <= classnr || the_class->script < 0) { -		sciprintf("[VM] Attempt to dereference class %x, which doesn't exist (max %x)\n", classnr, s->classtable_size); +	if (classnr < 0 || (int)s->_classtable.size() <= classnr || s->_classtable[classnr].script < 0) { +		warning("[VM] Attempt to dereference class %x, which doesn't exist (max %x)", classnr, s->_classtable.size());  		script_error_flag = script_debug_flag = 1;  		return NULL_REG;  	} else { +		Class *the_class = &s->_classtable[classnr];  		if (!the_class->reg.segment) {  			script_get_segment(s, the_class->script, lock);  			if (!the_class->reg.segment) { -				sciprintf("[VM] Trying to instantiate class %x by instantiating script 0x%x (%03d) failed;" -				          " Entering debugger.\n", classnr, the_class->script, the_class->script); +				warning("[VM] Trying to instantiate class %x by instantiating script 0x%x (%03d) failed;" +				          " Entering debugger.", classnr, the_class->script, the_class->script);  				script_error_flag = script_debug_flag = 1;  				return NULL_REG;  			} @@ -1811,18 +1811,18 @@ int script_instantiate_sci0(EngineState *s, int script_nr) {  			int species;  			reg_tmp.offset = addr.offset - SCRIPT_OBJECT_MAGIC_OFFSET;  			species = OBJ_SPECIES(s, reg_tmp); -			if (species < 0 || species >= s->classtable_size) { +			if (species < 0 || species >= (int)s->_classtable.size()) {  				sciprintf("Invalid species %d(0x%x) not in interval "  				          "[0,%d) while instantiating script %d\n", -				          species, species, s->classtable_size, +				          species, species, s->_classtable.size(),  				          script_nr);  				script_debug_flag = script_error_flag = 1;  				return 1;  			} -			s->classtable[species].script = script_nr; -			s->classtable[species].reg = addr; -			s->classtable[species].reg.offset = classpos; +			s->_classtable[species].script = script_nr; +			s->_classtable[species].reg = addr; +			s->_classtable[species].reg.offset = classpos;  			// Set technical class position-- into the block allocated for it  		}  		break; @@ -1952,7 +1952,7 @@ void script_uninstantiate_sci0(EngineState *s, int script_nr, SegmentId seg) {  			superclass = OBJ_SUPERCLASS(s, reg); // Get superclass...  			if (superclass >= 0) { -				int superclass_script = s->classtable[superclass].script; +				int superclass_script = s->_classtable[superclass].script;  				if (superclass_script == script_nr) {  					if (s->seg_manager->getLockers(reg.segment, SEG_ID)) @@ -1972,7 +1972,6 @@ void script_uninstantiate_sci0(EngineState *s, int script_nr, SegmentId seg) {  void script_uninstantiate(EngineState *s, int script_nr) {  	reg_t reg = make_reg(0, (s->version < SCI_VERSION_FTU_NEW_SCRIPT_HEADER) ? 2 : 0); -	int i;  	reg.segment = s->seg_manager->segGet(script_nr); @@ -1988,9 +1987,9 @@ void script_uninstantiate(EngineState *s, int script_nr) {  		return;  	// Free all classtable references to this script -	for (i = 0; i < s->classtable_size; i++) -		if (s->classtable[i].reg.segment == reg.segment) -			s->classtable[i].reg = NULL_REG; +	for (uint i = 0; i < s->_classtable.size(); i++) +		if (s->_classtable[i].reg.segment == reg.segment) +			s->_classtable[i].reg = NULL_REG;  	if (s->version < SCI_VERSION(1, 001, 000))  		script_uninstantiate_sci0(s, script_nr, reg.segment); | 
