pass by value and also snprintf()
Bruce Korb
bruce.korb@gmail.com
Mon Apr 27 18:54:00 GMT 2015
Hi Richard, THANK YOU!!
> That would be because you're passing buffer and fmt instead of a pointer to
> buffer and fmt. You need to do
>
> char * buffer_p = buffer;
> const char *fmt_p = fmt;
>
> void * values[5] = {
> [0] = &buffer_p,
> [1] = &bufsz,
> [2] = &fmt_p,
> [3] = &sblock,
> [4] = &band };
>
> One of the many peculiarities of the libffi api...
Indeed. Worthy of a BOLD caveat in the docs.
Googling seems to point mostly here:
http://www.atmark-techno.com/~yashi/libffi.html
but it looks like my info doc, so I hope it is up to date. Anyway, it was there
where I also saw that funny comment about altering passed values.
Based on my understanding of C and calling conventions, it seems pretty
impossible for a callee to alter a caller's value when passed by value, even if
one goes through libffi, so what is that comment trying to say? (RE:
ffi_call())
Anyway, again, thank you! Regards, Bruce
More information about the Libffi-discuss
mailing list