--- a/src/ai/api/ai_abstractlist.cpp Fri Jun 13 19:12:55 2008 +0000
+++ b/src/ai/api/ai_abstractlist.cpp Fri Jun 13 19:57:25 2008 +0000
@@ -556,10 +556,13 @@
return -1;
}
+ sq_addref(vm, &obj_func);
+
/* Read the params */
HSQOBJECT *obj_params = AllocaM(HSQOBJECT, nparam);
for (int i = 0; i < nparam; i++) {
sq_getstackobj(vm, i + 3, &obj_params[i]);
+ sq_addref(vm, &obj_params[i]);
}
/* Remove all unneeded stuff */
sq_pop(vm, nparam + 1);
@@ -595,6 +598,10 @@
} break;
default: {
+ sq_pop(vm, 3);
+ sq_release(vm, &obj_func);
+ for (int i = 0; i < nparam; i++) sq_release(vm, &obj_params[i]);
+
sq_throwerror(vm, _SC("return value of valuator is not valid (not integer/bool)"));
return -1;
}
@@ -602,9 +609,11 @@
/* Remove junk */
sq_pop(vm, 2);
- (*iter).second = value;
- this->buckets[value].insert((*iter).first);
+ (*iter).second = (int32)value;
+ this->buckets[(int32)value].insert((*iter).first);
}
+ sq_release(vm, &obj_func);
+ for (int i = 0; i < nparam; i++) sq_release(vm, &obj_params[i]);
return 0;
}