On Mon, 10 Apr 2023 at 23:31, Josef Friedrich <josef@friedrich.rocks> wrote:
> The documentation and the implementation of the two functions > lua.setluaname and lua.getluaname do not match. > > Minimal working example (MWE): > > % lua.setluaname(42, '@filename') not working > \directlua{ > lua.setluaname(nil, 42, '@filename') > } > \directlua 42 {xxx} > \bye > > > This is how the parameters should be arranged in the set function: > > lua.setluaname(<number> n, <string> s) > <string> s = lua.getluaname(<number> n) > > # Patch: > > diff --git a/manual/luatex-tex.tex b/manual/luatex-tex.tex > index f8c3d5ac6..e953a1802 100644 > --- a/manual/luatex-tex.tex > +++ b/manual/luatex-tex.tex > @@ -96,7 +96,7 @@ If you want to unset a \LUA\ name, you can assign > \type {nil} to it. The functio > accessors are: > > \startfunctioncall > -lua.setluaname(<string> s,<number> n]) > +lua.setluaname(<number> n, <string> s) > <string> s = lua.getluaname(<number> n) > \stopfunctioncall > > @@ -2747,7 +2747,6 @@ The options match commandline arguments from \type > {kpsewhich}: > If \type {--output-directory} is specified and the value is a relative > pathname, > the file is searched first here and then in the standard tree. > > - > \stopsubsection > > \startsubsection[title={\type {init_prog}}] > diff --git a/source/texk/web2c/luatexdir/lua/llualib.c > b/source/texk/web2c/luatexdir/lua/llualib.c > index 0586aba02..d91a9a729 100644 > --- a/source/texk/web2c/luatexdir/lua/llualib.c > +++ b/source/texk/web2c/luatexdir/lua/llualib.c > @@ -319,8 +319,8 @@ static int set_luaname(lua_State * L) > { > int k; > const char *s; > - if (lua_gettop(L) == 3) { > - k = (int) luaL_checkinteger(L, 2); > + if (lua_gettop(L) == 2) { > + k = (int) luaL_checkinteger(L, 1); > if (k > 65535 || k < 0) { > /* error */ > } else { > @@ -328,8 +328,8 @@ static int set_luaname(lua_State * L) > free(luanames[k]); > luanames[k] = NULL; > } > - if (lua_type(L,3) == LUA_TSTRING) { > - s = lua_tostring(L, 3); > + if (lua_type(L, 2) == LUA_TSTRING) { > + s = lua_tostring(L, 2); > if (s != NULL) > luanames[k] = xstrdup(s); > } > @@ -340,7 +340,7 @@ static int set_luaname(lua_State * L) > > static int get_luaname(lua_State * L) > { > - int k = (int) luaL_checkinteger(L, 2); > + int k = (int) luaL_checkinteger(L, 1); > if (k > 65535 || k < 0) { > /* error */ > lua_pushnil(L); > Pushed f4a891108 lua.setluaname(n, s) and lua.getluaname(n): fixed mismatch between documentation and implementation (J. Friedrich). -- luigi
_______________________________________________ dev-luatex mailing list dev-luatex@ntg.nl https://mailman.ntg.nl/mailman/listinfo/dev-luatex