fixed a wrong index used when getting the mod pointer into/from the prim object
This commit is contained in:
		| @ -960,7 +960,8 @@ static HCL_INLINE int call_primitive (hcl_t* hcl, hcl_ooi_t nargs) | ||||
| 	hcl_oop_word_t rcv; | ||||
|  | ||||
| 	rcv = (hcl_oop_word_t)HCL_STACK_GETRCV(hcl, nargs); | ||||
| 	HCL_ASSERT (hcl, HCL_IS_PRIM (hcl, rcv)); | ||||
| 	HCL_ASSERT (hcl, HCL_IS_PRIM(hcl, rcv)); | ||||
| 	HCL_ASSERT (hcl, HCL_OBJ_GET_SIZE(rcv) == 4); | ||||
|  | ||||
| 	if (nargs < rcv->slot[1] && nargs > rcv->slot[2]) | ||||
| 	{ | ||||
| @ -972,7 +973,7 @@ static HCL_INLINE int call_primitive (hcl_t* hcl, hcl_ooi_t nargs) | ||||
| 		return -1; | ||||
| 	} | ||||
|  | ||||
| 	return ((hcl_pfimpl_t)rcv->slot[0]) (hcl, (hcl_mod_t*)rcv->slot[4], nargs); | ||||
| 	return ((hcl_pfimpl_t)rcv->slot[0]) (hcl, (hcl_mod_t*)rcv->slot[3], nargs); | ||||
| } | ||||
|  | ||||
| /* ------------------------------------------------------------------------- */ | ||||
|  | ||||
| @ -49,7 +49,7 @@ hcl_oop_t hcl_makeprim (hcl_t* hcl, hcl_pfimpl_t primimpl, hcl_oow_t minargs, hc | ||||
| 		obj->slot[0] = (hcl_oow_t)primimpl; | ||||
| 		obj->slot[1] = minargs; | ||||
| 		obj->slot[2] = maxargs; | ||||
| 		obj->slot[4] = (hcl_oow_t)mod; | ||||
| 		obj->slot[3] = (hcl_oow_t)mod; | ||||
| 	} | ||||
|  | ||||
| 	return (hcl_oop_t)obj; | ||||
|  | ||||
		Reference in New Issue
	
	Block a user