On 4/24/2014 1:39 AM, Stéphane Goujet wrote:
On Wed, 23 Apr 2014, Hans Hagen wrote:
On 4/23/2014 3:07 PM, Stéphane Goujet wrote:
There is still the problem that "node.has_attribute" does not return "nil" when I expect it should, but that is luatex problem (a check that a parameter is really an integer should be performed before calling lua_tointeger), so I will change mailing-list in order to report it.
that interface is unlikely to change (e.g. because of performance reasons)
Er... well, the other parameter is already checked, with a check_isnode() which is heavier than a lua_isnumber() or lua_isnil(). It is possible that the former one is not inlined when the other ones are (I did not verify either of these hypotheses).
Anyway, if you do not want to make this change in the code, you should change the specification, because now, Luatex reference manual says "It returns the value, or, if no match is found, nil", whereas when we supply an attribute number which is nil or not a number (therefore it cannot ever match), it returns a non-nil value (which, moreover, means "true"). Something like adding "If id is nil or if id is not an integer, the result is unspecified", perhaps.
I've added a tracker item and will look at it later (no more changed at this moment to the code as we're closing in on release i.e. texlive code freeze). Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------