/* spawn the world entity */
prog->entitypool.emplace_back(true);
prog->entitydata.resize(prog->entityfields);
- memset(prog->entitydata.data(), 0, sizeof(prog->entitydata[0]) * prog->entityfields);
+ if (prog->entitydata.size())
+ memset(prog->entitydata.data(), 0, sizeof(prog->entitydata[0]) * prog->entityfields);
prog->entities = 1;
/* cache some globals and fields from names */
oldsp = prog->stack[prog->stack.size()-1].localsp;
#endif
if (prev) {
- qcint_t *globals = &prog->globals[0] + prev->firstlocal;
- memcpy(globals, &prog->localstack[oldsp], prev->locals * sizeof(prog->localstack[0]));
+ if (prev->locals) {
+ qcint_t *globals = &prog->globals[0] + prev->firstlocal;
+ memcpy(globals, &prog->localstack[oldsp], prev->locals * sizeof(prog->localstack[0]));
+ }
prog->localstack.resize(oldsp);
}
return 0;
}
+static int qc_stov(qc_program_t *prog) {
+ qcany_t *str;
+ qcany_t num;
+ CheckArgs(1);
+ str = GetArg(0);
+ (void)util_sscanf(prog_getstring(prog, str->string), " ' %f %f %f ' ",
+ &num.vector[0],
+ &num.vector[1],
+ &num.vector[2]);
+ Return(num);
+ return 0;
+}
+
static int qc_vtos(qc_program_t *prog) {
char buffer[512];
qcany_t *num;
&qc_normalize, /* 12 */
&qc_sqrt, /* 13 */
&qc_floor, /* 14 */
- &qc_pow /* 15 */
+ &qc_pow, /* 15 */
+ &qc_stov /* 16 */
};
static const char *arg0 = nullptr;