#if PRVMTRACE
PRVM_PrintStatement(st);
#endif
+#if PRVMSTATEMENTPROFILING
+ prog->statement_profile[st - prog->statements]++;
+#endif
switch (st->op)
{
OPC->vector[2] = OPB->_float * OPA->vector[2];
break;
case OP_DIV_F:
- OPC->_float = OPA->_float / OPB->_float;
+ if( OPB->_float != 0.0f )
+ {
+ OPC->_float = OPA->_float / OPB->_float;
+ }
+ else
+ {
+ if( developer.integer >= 1 )
+ {
+ prog->xfunction->profile += (st - startst);
+ startst = st;
+ prog->xstatement = st - prog->statements;
+ VM_Warning( "Attempted division by zero in %s\n", PRVM_NAME );
+ }
+ OPC->_float = 0.0f;
+ }
break;
case OP_BITAND:
OPC->_float = (int)OPA->_float & (int)OPB->_float;
prog->xfunction->profile += (st - startst);
st += st->b - 1; // offset the s++
startst = st;
- if (++jumpcount> 1000000)
+ if (++jumpcount == 10000000)
{
prog->xstatement = st - prog->statements;
- PRVM_ERROR("runaway loop counter hit limit of %d jumps\ntip: if having trouble identifying the problem, try typing profile now in %s", jumpcount, PRVM_NAME);
+ PRVM_Profile(1<<30, 1000000);
+ PRVM_ERROR("runaway loop counter hit limit of %d jumps\ntip: read above for list of most-executed functions", jumpcount, PRVM_NAME);
}
}
break;
prog->xfunction->profile += (st - startst);
st += st->b - 1; // offset the s++
startst = st;
- if (++jumpcount> 1000000)
+ if (++jumpcount == 10000000)
{
prog->xstatement = st - prog->statements;
- PRVM_ERROR("runaway loop counter hit limit of %d jumps\ntip: if having trouble identifying the problem, try typing profile now in %s", jumpcount, PRVM_NAME);
+ PRVM_Profile(1<<30, 1000000);
+ PRVM_ERROR("runaway loop counter hit limit of %d jumps\ntip: read above for list of most-executed functions", jumpcount, PRVM_NAME);
}
}
break;
prog->xfunction->profile += (st - startst);
st += st->a - 1; // offset the s++
startst = st;
- if (++jumpcount> 1000000)
+ if (++jumpcount == 10000000)
{
prog->xstatement = st - prog->statements;
- PRVM_ERROR("runaway loop counter hit limit of %d jumps\ntip: if having trouble identifying the problem, try typing profile now in %s", jumpcount, PRVM_NAME);
+ PRVM_Profile(1<<30, 1000000);
+ PRVM_ERROR("runaway loop counter hit limit of %d jumps\ntip: read above for list of most-executed functions", jumpcount, PRVM_NAME);
}
break;