X-Git-Url: http://git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=prvm_execprogram.h;h=988e913a7b2b525692f5cc1e0b27e496744e6063;hp=ea3668219b119115e272d011d17bf020efd22045;hb=4d33dcb245a32cf4c44807e8b53e4fccea944633;hpb=19500db263c2f370cf6a43d489ba4e2ce31fa917 diff --git a/prvm_execprogram.h b/prvm_execprogram.h index ea366821..988e913a 100644 --- a/prvm_execprogram.h +++ b/prvm_execprogram.h @@ -492,7 +492,7 @@ int i; if ((prvm_uint_t)OPB->_int < cached_entityfields && !cached_allowworldwrites) { PRE_ERROR(); - VM_Warning(prog, "assignment to world.%s (field %i) in %s\n", PRVM_GetString(prog, PRVM_ED_FieldAtOfs(prog, OPB->_int)->s_name), (int)OPB->_int, prog->name); + VM_Warning(prog, "Attempted assignment to NULL entity field .%s (%i) in %s\n", PRVM_GetString(prog, PRVM_ED_FieldAtOfs(prog, OPB->_int)->s_name), (int)OPB->_int, prog->name); } } ptr = (prvm_eval_t *)(cached_edictsfields + OPB->_int); @@ -510,7 +510,7 @@ int i; if ((prvm_uint_t)OPB->_int < cached_entityfields && !cached_allowworldwrites) { PRE_ERROR(); - VM_Warning(prog, "assignment to world.%s (field %i) in %s\n", PRVM_GetString(prog, PRVM_ED_FieldAtOfs(prog, OPB->_int)->s_name), (int)OPB->_int, prog->name); + VM_Warning(prog, "Attempted assignment to NULL entity field .%s (%i) in %s\n", PRVM_GetString(prog, PRVM_ED_FieldAtOfs(prog, OPB->_int)->s_name), (int)OPB->_int, prog->name); } } // refresh the garbage collection on the string - this guards @@ -534,7 +534,7 @@ int i; if ((prvm_uint_t)OPB->_int < cached_entityfields && !cached_allowworldwrites) { PRE_ERROR(); - VM_Warning(prog, "assignment to world.%s (field %i) in %s\n", PRVM_GetString(prog, PRVM_ED_FieldAtOfs(prog, OPB->_int)->s_name), (int)OPB->_int, prog->name); + VM_Warning(prog, "Attempted assignment to NULL entity field .%s (%i) in %s\n", PRVM_GetString(prog, PRVM_ED_FieldAtOfs(prog, OPB->_int)->s_name), (int)OPB->_int, prog->name); } } ptr = (prvm_eval_t *)(cached_edictsfields + OPB->_int); @@ -547,7 +547,7 @@ int i; if ((prvm_uint_t)OPA->edict >= cached_max_edicts) { PRE_ERROR(); - prog->error_cmd("%s Progs attempted to address an out of bounds edict number", prog->name); + prog->error_cmd("%s attempted to address an out of bounds edict number", prog->name); goto cleanup; } if ((prvm_uint_t)OPB->_int >= cached_entityfields) @@ -560,7 +560,7 @@ int i; if (OPA->edict == 0 && !cached_allowworldwrites) { PRE_ERROR(); - prog->error_cmd("forbidden assignment to null/world entity in %s", prog->name); + prog->error_cmd("Forbidden assignment to NULL entity in %s", prog->name); goto cleanup; } #endif @@ -574,7 +574,7 @@ int i; if ((prvm_uint_t)OPA->edict >= cached_max_edicts) { PRE_ERROR(); - prog->error_cmd("%s Progs attempted to read an out of bounds edict number", prog->name); + prog->error_cmd("%s attempted to read an out of bounds edict number", prog->name); goto cleanup; } if ((prvm_uint_t)OPB->_int >= cached_entityfields) @@ -590,7 +590,7 @@ int i; if ((prvm_uint_t)OPA->edict >= cached_max_edicts) { PRE_ERROR(); - prog->error_cmd("%s Progs attempted to read an out of bounds edict number", prog->name); + prog->error_cmd("%s attempted to read an out of bounds edict number", prog->name); goto cleanup; } if ((prvm_uint_t)OPB->_int >= cached_entityfields) @@ -613,7 +613,7 @@ int i; if ((prvm_uint_t)OPA->edict >= cached_max_edicts) { PRE_ERROR(); - prog->error_cmd("%s Progs attempted to read an out of bounds edict number", prog->name); + prog->error_cmd("%s attempted to read an out of bounds edict number", prog->name); goto cleanup; } if ((prvm_uint_t)OPB->_int > cached_entityfields_3) @@ -632,6 +632,8 @@ int i; //================== HANDLE_OPCODE(OP_IFNOT): + //spike FIXME -- dp redefined IFNOT[_I] as IFNOT_F, which breaks if(0x80000000) + //spike FIXME -- you should add separate IFNOT_I/IFNOT_F opcodes and remap IFNOT_I to ITNOT_F in v6 progs for compat. if(!FLOAT_IS_TRUE_FOR_INT(OPA->_int)) // TODO add an "int-if", and change this one to OPA->_float // although mostly unneeded, thanks to the only float being false being 0x0 and 0x80000000 (negative zero) @@ -651,6 +653,7 @@ int i; DISPATCH_OPCODE(); HANDLE_OPCODE(OP_IF): + //spike FIXME -- dp redefined IF[_I] as IF_F if(FLOAT_IS_TRUE_FOR_INT(OPA->_int)) // TODO add an "int-if", and change this one, as well as the FLOAT_IS_TRUE_FOR_INT usages, to OPA->_float // although mostly unneeded, thanks to the only float being false being 0x0 and 0x80000000 (negative zero) @@ -708,7 +711,7 @@ int i; if(!OPA->function || OPA->function < 0 || OPA->function >= prog->numfunctions) { PRE_ERROR(); - prog->error_cmd("%s CALL outside the program", prog->name); + prog->error_cmd("%s attempted CALL outside the program", prog->name); goto cleanup; } @@ -748,7 +751,7 @@ int i; goto chooseexecprogram; } else - prog->error_cmd("No such builtin #%i in %s; most likely cause: outdated engine build. Try updating!", builtinnumber, prog->name); + prog->error_cmd("No such builtin #%i in %s. This program is corrupt or incompatible with DarkPlaces (or this version of it)", builtinnumber, prog->name); } else st = cached_statements + PRVM_EnterFunction(prog, enterfunc); @@ -948,7 +951,7 @@ int i; if (OPB->_int < 0 || OPB->_int + 4 > pr_edictareasize) { PRE_ERROR(); - prog->error_cmd("%s Progs attempted to write to an out of bounds edict", prog->name); + prog->error_cmd("%s attempted to write to an out of bounds edict", prog->name); goto cleanup; } #endif @@ -960,13 +963,13 @@ int i; if (OPA->edict < 0 || OPA->edict >= prog->max_edicts) { PRE_ERROR(); - prog->error_cmd("%s Progs attempted to read an out of bounds edict number", prog->name); + prog->error_cmd("%s attempted to read an out of bounds edict number", prog->name); goto cleanup; } if (OPB->_int < 0 || OPB->_int >= progs->entityfields.ip) { PRE_ERROR(); - prog->error_cmd("%s Progs attempted to read an invalid field in an edict", prog->name); + prog->error_cmd("%s attempted to read an invalid field in an edict", prog->name); goto cleanup; } #endif @@ -983,16 +986,16 @@ int i; if (OPB->_int < 0 || OPB->_int >= prog->numglobals) { PRE_ERROR(); - prog->error_cmd("%s Progs attempted to write to an invalid indexed global", prog->name); + prog->error_cmd("%s attempted to write to an invalid indexed global", prog->name); goto cleanup; } prog->globals.ip[OPB->_int] = OPA->_int; DISPATCH_OPCODE(); HANDLE_OPCODE(OP_GSTOREP_V): - if (OPB->_int < 0 || OPB->_int + 2 >= prog->numglobaldefs) + if (OPB->_int < 0 || OPB->_int + 2 >= prog->numglobals) { PRE_ERROR(); - prog->error_cmd("%s Progs attempted to write to an invalid indexed global", prog->name); + prog->error_cmd("%s attempted to write to an invalid indexed global", prog->name); goto cleanup; } prog->globals.ip[OPB->_int ] = OPA->ivector[0]; @@ -1005,7 +1008,7 @@ int i; if (i < 0 || i >= prog->numglobaldefs) { PRE_ERROR(); - prog->error_cmd("%s Progs attempted to address an out of bounds global", prog->name); + prog->error_cmd("%s attempted to address an out of bounds global", prog->name); goto cleanup; } OPC->_int = prog->globals.ip[i]; @@ -1017,22 +1020,20 @@ int i; HANDLE_OPCODE(OP_GLOAD_ENT): HANDLE_OPCODE(OP_GLOAD_S): HANDLE_OPCODE(OP_GLOAD_FNC): - // FIXME?: Is this correct? vvvvvvvvvvvvv - if (OPA->_int < 0 || OPA->_int >= prog->numglobaldefs) + if (OPA->_int < 0 || OPA->_int >= prog->numglobals) { PRE_ERROR(); - prog->error_cmd("%s Progs attempted to read an invalid indexed global", prog->name); + prog->error_cmd("%s attempted to read an invalid indexed global", prog->name); goto cleanup; } OPC->_int = prog->globals.ip[OPA->_int]; DISPATCH_OPCODE(); HANDLE_OPCODE(OP_GLOAD_V): - // FIXME?: Is this correct? vvvvvvvvvvvvv - if (OPA->_int < 0 || OPA->_int + 2 >= prog->numglobaldefs) + if (OPA->_int < 0 || OPA->_int + 2 >= prog->numglobals) { PRE_ERROR(); - prog->error_cmd("%s Progs attempted to read an invalid indexed global", prog->name); + prog->error_cmd("%s attempted to read an invalid indexed global", prog->name); goto cleanup; } OPC->ivector[0] = prog->globals.ip[OPA->_int ]; @@ -1041,10 +1042,10 @@ int i; DISPATCH_OPCODE(); HANDLE_OPCODE(OP_BOUNDCHECK): - if (OPA->_int < 0 || OPA->_int >= OPB->_int) + if ((unsigned int)OPA->_int < (unsigned int)st->operand[2] || (unsigned int)OPA->_int >= (unsigned int)st->operand[1]) { PRE_ERROR(); - prog->error_cmd("%s Progs boundcheck failed at line number %d, value is < 0 or >= %d", prog->name, OPB->_int, OPC->_int); + prog->error_cmd("Progs boundcheck failed in %s, value is < %" PRVM_PRIi " or >= %" PRVM_PRIi, prog->name, OPC->_int, OPB->_int); goto cleanup; } DISPATCH_OPCODE(); @@ -1052,7 +1053,7 @@ int i; #if !USE_COMPUTED_GOTOS default: PRE_ERROR(); - prog->error_cmd("Bad opcode %i in %s", st->op, prog->name); + prog->error_cmd("Bad opcode %i in %s. This program is corrupt or incompatible with DarkPlaces (or this version of it)", st->op, prog->name); goto cleanup; } #if PRVMSLOWINTERPRETER