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. Goodbye, Stéphane.