equal
deleted
inserted
replaced
554 if (sq_isfunction(obj_func)) { |
554 if (sq_isfunction(obj_func)) { |
555 sq_throwerror(vm, _SC("parameter 2 has an invalid type (expected function)")); |
555 sq_throwerror(vm, _SC("parameter 2 has an invalid type (expected function)")); |
556 return -1; |
556 return -1; |
557 } |
557 } |
558 |
558 |
|
559 sq_addref(vm, &obj_func); |
|
560 |
559 /* Read the params */ |
561 /* Read the params */ |
560 HSQOBJECT *obj_params = AllocaM(HSQOBJECT, nparam); |
562 HSQOBJECT *obj_params = AllocaM(HSQOBJECT, nparam); |
561 for (int i = 0; i < nparam; i++) { |
563 for (int i = 0; i < nparam; i++) { |
562 sq_getstackobj(vm, i + 3, &obj_params[i]); |
564 sq_getstackobj(vm, i + 3, &obj_params[i]); |
|
565 sq_addref(vm, &obj_params[i]); |
563 } |
566 } |
564 /* Remove all unneeded stuff */ |
567 /* Remove all unneeded stuff */ |
565 sq_pop(vm, nparam + 1); |
568 sq_pop(vm, nparam + 1); |
566 |
569 |
567 /* Walk all items, and query the result */ |
570 /* Walk all items, and query the result */ |
593 sq_getbool(vm, -1, &v); |
596 sq_getbool(vm, -1, &v); |
594 value = v ? 1 : 0; |
597 value = v ? 1 : 0; |
595 } break; |
598 } break; |
596 |
599 |
597 default: { |
600 default: { |
|
601 sq_pop(vm, 3); |
|
602 sq_release(vm, &obj_func); |
|
603 for (int i = 0; i < nparam; i++) sq_release(vm, &obj_params[i]); |
|
604 |
598 sq_throwerror(vm, _SC("return value of valuator is not valid (not integer/bool)")); |
605 sq_throwerror(vm, _SC("return value of valuator is not valid (not integer/bool)")); |
599 return -1; |
606 return -1; |
600 } |
607 } |
601 } |
608 } |
602 /* Remove junk */ |
609 /* Remove junk */ |
603 sq_pop(vm, 2); |
610 sq_pop(vm, 2); |
604 |
611 |
605 (*iter).second = value; |
612 (*iter).second = (int32)value; |
606 this->buckets[value].insert((*iter).first); |
613 this->buckets[(int32)value].insert((*iter).first); |
607 } |
614 } |
608 |
615 |
|
616 sq_release(vm, &obj_func); |
|
617 for (int i = 0; i < nparam; i++) sq_release(vm, &obj_params[i]); |
609 return 0; |
618 return 0; |
610 } |
619 } |