ffi: fix recording of foreign function names
The internal change to a curried mode caused a generic name to be used.
This commit is contained in:
parent
0f6cd01489
commit
ab9a5d261e
|
@ -3549,7 +3549,7 @@ static Scheme_Object *ffi_do_call(int argc, Scheme_Object *argv[], Scheme_Object
|
|||
{
|
||||
Scheme_Object *data = SCHEME_PRIM_CLOSURE_ELS(self)[0];
|
||||
int curried = !SCHEME_VEC_ELS(data)[1] && !SCHEME_INT_VAL(SCHEME_VEC_ELS(data)[5]);
|
||||
const char *name = SCHEME_BYTE_STR_VAL(SCHEME_VEC_ELS(data)[0]);
|
||||
const char *name = ((Scheme_Primitive_Closure *)self)->p.name;
|
||||
void *c_func = (curried
|
||||
? (void*)SCHEME_PRIM_CLOSURE_ELS(self)[1]
|
||||
: (void*)(SCHEME_VEC_ELS(data)[1]));
|
||||
|
@ -3724,6 +3724,7 @@ static Scheme_Object *make_ffi_call_from_curried(int argc, Scheme_Object *argv[]
|
|||
{
|
||||
Scheme_Object *data = SCHEME_PRIM_CLOSURE_ELS(self)[0];
|
||||
Scheme_Object *a[3], *name, *itypes, *obj, *cp;
|
||||
const char *name_str;
|
||||
intptr_t ooff;
|
||||
int nargs;
|
||||
|
||||
|
@ -3737,7 +3738,9 @@ static Scheme_Object *make_ffi_call_from_curried(int argc, Scheme_Object *argv[]
|
|||
|
||||
name = SCHEME_VEC_ELS(data)[0];
|
||||
if (SCHEME_FFIOBJP(cp))
|
||||
name = scheme_make_byte_string(((ffi_obj_struct*)(cp))->name);
|
||||
name_str = ((ffi_obj_struct*)(cp))->name;
|
||||
else
|
||||
name_str = SCHEME_BYTE_STR_VAL(name);
|
||||
|
||||
itypes = SCHEME_VEC_ELS(data)[2];
|
||||
|
||||
|
@ -3749,7 +3752,7 @@ static Scheme_Object *make_ffi_call_from_curried(int argc, Scheme_Object *argv[]
|
|||
|
||||
return scheme_make_prim_closure_w_arity(ffi_do_call_after_stack_check,
|
||||
3, a,
|
||||
SCHEME_BYTE_STR_VAL(name),
|
||||
name_str,
|
||||
nargs, nargs);
|
||||
|
||||
}
|
||||
|
|
|
@ -2720,7 +2720,7 @@ static Scheme_Object *ffi_do_call(int argc, Scheme_Object *argv[], Scheme_Object
|
|||
{
|
||||
Scheme_Object *data = SCHEME_PRIM_CLOSURE_ELS(self)[0];
|
||||
int curried = !SCHEME_VEC_ELS(data)[1] && !SCHEME_INT_VAL(SCHEME_VEC_ELS(data)[5]);
|
||||
const char *name = SCHEME_BYTE_STR_VAL(SCHEME_VEC_ELS(data)[0]);
|
||||
const char *name = ((Scheme_Primitive_Closure *)self)->p.name;
|
||||
void *c_func = (curried
|
||||
? (void*)SCHEME_PRIM_CLOSURE_ELS(self)[1]
|
||||
: (void*)(SCHEME_VEC_ELS(data)[1]));
|
||||
|
@ -2895,6 +2895,7 @@ static Scheme_Object *make_ffi_call_from_curried(int argc, Scheme_Object *argv[]
|
|||
{
|
||||
Scheme_Object *data = SCHEME_PRIM_CLOSURE_ELS(self)[0];
|
||||
Scheme_Object *a[3], *name, *itypes, *obj, *cp;
|
||||
const char *name_str;
|
||||
intptr_t ooff;
|
||||
int nargs;
|
||||
|
||||
|
@ -2908,7 +2909,9 @@ static Scheme_Object *make_ffi_call_from_curried(int argc, Scheme_Object *argv[]
|
|||
|
||||
name = SCHEME_VEC_ELS(data)[0];
|
||||
if (SCHEME_FFIOBJP(cp))
|
||||
name = scheme_make_byte_string(((ffi_obj_struct*)(cp))->name);
|
||||
name_str = ((ffi_obj_struct*)(cp))->name;
|
||||
else
|
||||
name_str = SCHEME_BYTE_STR_VAL(name);
|
||||
|
||||
itypes = SCHEME_VEC_ELS(data)[2];
|
||||
|
||||
|
@ -2920,7 +2923,7 @@ static Scheme_Object *make_ffi_call_from_curried(int argc, Scheme_Object *argv[]
|
|||
|
||||
return scheme_make_prim_closure_w_arity(ffi_do_call_after_stack_check,
|
||||
3, a,
|
||||
SCHEME_BYTE_STR_VAL(name),
|
||||
name_str,
|
||||
nargs, nargs);
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user