131 |
return type == VM_NO_UNIT; |
return type == VM_NO_UNIT; |
132 |
} |
} |
133 |
|
|
134 |
bool CoreVMFunction_wait::acceptsArgUnitPrefix(vmint iArg) const { |
bool CoreVMFunction_wait::acceptsArgUnitPrefix(vmint iArg, StdUnit_t type) const { |
135 |
return iArg == 0; |
return iArg == 0 && type == VM_SECOND; |
136 |
} |
} |
137 |
|
|
138 |
VMFnResult* CoreVMFunction_wait::exec(VMFnArgs* args) { |
VMFnResult* CoreVMFunction_wait::exec(VMFnArgs* args) { |
139 |
ExecContext* ctx = dynamic_cast<ExecContext*>(vm->currentVMExecContext()); |
ExecContext* ctx = dynamic_cast<ExecContext*>(vm->currentVMExecContext()); |
140 |
VMIntExpr* expr = dynamic_cast<VMIntExpr*>(args->arg(0)); |
VMIntExpr* expr = dynamic_cast<VMIntExpr*>(args->arg(0)); |
141 |
vmint us = expr->evalInt(VM_MICRO); |
StdUnit_t unit = expr->unitType(); |
142 |
|
vmint us = (unit) ? expr->evalInt(VM_MICRO) : expr->evalInt(); |
143 |
if (us < 0) { |
if (us < 0) { |
144 |
wrnMsg("wait(): argument may not be negative! Aborting script!"); |
wrnMsg("wait(): argument may not be negative! Aborting script!"); |
145 |
this->result.flags = STMT_ABORT_SIGNALLED; |
this->result.flags = STMT_ABORT_SIGNALLED; |