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

Reply via email to