Re: [Gcl-devel] Re: (object (*)()) vs (long (*)())
Camm Maguire <email@example.com> writes:
|> Greetings, and thanks for your *very helpful* reply!
|> OK, now it is clear to me what is going on. I calling all functions
|> through a variable declared to return a pointer, and some functions
|> are returning a long.
|> I can fix the instances in the existing code fairly easily, but the
|> issue is that the lisp compiler produces C code using these
|> interchangeable declarations. At some point, I need to either have
|> all compiled functions return the same union and use the existing
|> function link helper functions (in funlink.c, et.al.), or to duplicate
|> these functions to handle function variables returning long and modify
|> the compiler to use these in the correct instances instead. As
|> always, the implementation is much easier than the conception of the
|> proper solution. Comments most welcome.
The only proper solution is to make all functions use the same signature,
and cast the return value at the call site. Otherwise you will get
problems on other architectures as well.
Andreas Schwab, SuSE Labs, firstname.lastname@example.org
SuSE Linux AG, Deutschherrnstr. 15-19, D-90429 Nürnberg
Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."