enhanced pf_call with moo_intmaxtoint() for FMTC_LONGLONG
This commit is contained in:
parent
2cd60cbed8
commit
2cf12ade33
@ -397,7 +397,6 @@ static MOO_INLINE int add_ffi_arg (moo_t* moo, ffi_t* ffi, moo_ooch_t fmtc, int
|
|||||||
if (_unsigned)
|
if (_unsigned)
|
||||||
{
|
{
|
||||||
moo_uintmax_t v;
|
moo_uintmax_t v;
|
||||||
/* TODO: if (MOO_SIZEOF_LONG_LONG > MOO_SIZEOF_OOI_T) use moo_inttointmax() or something */
|
|
||||||
if (moo_inttouintmax(moo, arg, &v) == 0) goto oops;
|
if (moo_inttouintmax(moo, arg, &v) == 0) goto oops;
|
||||||
#if defined(USE_DYNCALL)
|
#if defined(USE_DYNCALL)
|
||||||
dcArgLongLong (ffi->dc, v);
|
dcArgLongLong (ffi->dc, v);
|
||||||
@ -696,12 +695,10 @@ static moo_pfrc_t pf_call (moo_t* moo, moo_mod_t* mod, moo_ooi_t nargs)
|
|||||||
#else
|
#else
|
||||||
moo_oop_t r;
|
moo_oop_t r;
|
||||||
#if defined(USE_DYNCALL)
|
#if defined(USE_DYNCALL)
|
||||||
|
r = moo_intmaxtoint(moo, dcCallLongLong(ffi->dc, f));
|
||||||
r = moo_ooitoint(moo, dcCallLongLong(ffi->dc, f));
|
|
||||||
#elif defined(USE_LIBFFI)
|
#elif defined(USE_LIBFFI)
|
||||||
/* TODO: use moo_intmaxtoint()... */
|
|
||||||
/* TODO: unsigned */
|
/* TODO: unsigned */
|
||||||
r = moo_ooitoint(moo, ffi->ret_sv.ll);
|
r = moo_intmaxtoint(moo, ffi->ret_sv.ll);
|
||||||
#endif
|
#endif
|
||||||
if (!r) goto hardfail;
|
if (!r) goto hardfail;
|
||||||
MOO_STACK_SETRET (moo, nargs, r);
|
MOO_STACK_SETRET (moo, nargs, r);
|
||||||
|
Loading…
Reference in New Issue
Block a user