On 02/05/13 21:26, Leyne, Sean wrote:
>
>>> With my 18+ years of using IB/FB I never ran into this issue, never
>>> had to use a UDF with more than 5 params, so I was surprised by the error.
>>>
>>> Is there a 'real' reason why there is a parameter limit? Or, is it a
>>> case that a limit was required for syntax purposes and someone thought
>>> that 10 was a good number?
>>>
>> The implementation requires a limit, and the limit is 10.
>>
>> Space are allocated in the stack for all parameters, and also passed all
>> (even
>> the unused ones, but is ok for cdecl) parameters to the UDF.
> But could the limit be increased, if an appropriate argument could be made?
>
>
Sean, currently code, calling UDF, looks this way
template <typename T>
T CALL_UDF(Jrd::Attachment* att, int (*entrypoint)(), UDF_ARG* args)
{
Jrd::Attachment::Checkout attCout(att, FB_FUNCTION);
return ((T (*)(UDF_ARG, UDF_ARG, UDF_ARG, UDF_ARG, UDF_ARG,
UDF_ARG, UDF_ARG, UDF_ARG, UDF_ARG, UDF_ARG))(entrypoint))
(args[0], args[1], args[2], args[3], args[4], args[5],
args[6], args[7], args[8], args[9]);
}
Certainly, it's possible to add args[10], args[11], etc. but this does
not look like good solution.
May be in a private build for you?
------------------------------------------------------------------------------
Free Next-Gen Firewall Hardware Offer
Buy your Sophos next-gen firewall before the end March 2013
and get the hardware for free! Learn more.
http://p.sf.net/sfu/sophos-d2d-feb
Firebird-Devel mailing list, web interface at
https://lists.sourceforge.net/lists/listinfo/firebird-devel