[luatex] Problem with node.has_attribute
Stéphane Goujet
stephane.goujet at wanadoo.fr
Wed Apr 23 15:31:17 CEST 2014
Hello,
In my opinion, node.has_attribute behaves wrongly when the attribute
number passed as parameter is nil. Since the attribute number is
incorrect, it should return nil; but it returns a valid result.
This is the current code in lnodelib.c :
====================
static int lua_nodelib_has_attribute(lua_State * L)
{
halfword *n;
int i, val;
n = check_isnode(L, 1);
if (n != NULL) {
i = (int) lua_tointeger(L, 2);
val = (int) luaL_optinteger(L, 3, UNUSED_ATTRIBUTE);
if ((val = has_attribute(*n, i, val)) > UNUSED_ATTRIBUTE) {
lua_pushnumber(L, val);
return 1;
}
}
lua_pushnil(L);
return 1;
}
=====================
lua_tointeger() may return anything if the parameter is not an integer.
So a check should be added before calling lua_tointeger(). I am not sure
if the exact integer correctness should be tested, but I think it should
be at least tested against nil.
Goodbye,
Stéphane Goujet.
More information about the luatex
mailing list