diff options
author | Bruno Haible <bruno@clisp.org> | 2023-03-14 02:41:27 +0100 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2023-03-14 02:57:28 +0100 |
commit | bb57c7637a04ce5f980c71cb42b1b5ef089a3a0f (patch) | |
tree | cedfa90297f4d82dba5f6a79021dcda100302081 | |
parent | 85d4cb991e6a8c111d0739c343bba22143c094d6 (diff) | |
download | gettext-bb57c7637a04ce5f980c71cb42b1b5ef089a3a0f.tar.gz |
lisp-format, scheme-format: Fix a loop transformation.
* gettext-tools/src/format-lisp.c (rotate_loop): Assign the new
list->repeated.count.
* gettext-tools/src/format-scheme.c (rotate_loop): Likewise.
* gettext-tools/tests/xgettext-lisp-6: New file.
* gettext-tools/tests/Makefile.am (TESTS): Add it.
-rw-r--r-- | gettext-tools/src/format-lisp.c | 1 | ||||
-rw-r--r-- | gettext-tools/src/format-scheme.c | 1 | ||||
-rw-r--r-- | gettext-tools/tests/Makefile.am | 2 | ||||
-rwxr-xr-x | gettext-tools/tests/xgettext-lisp-6 | 24 |
4 files changed, 27 insertions, 1 deletions
diff --git a/gettext-tools/src/format-lisp.c b/gettext-tools/src/format-lisp.c index d89746b76..81e89f3a1 100644 --- a/gettext-tools/src/format-lisp.c +++ b/gettext-tools/src/format-lisp.c @@ -776,6 +776,7 @@ rotate_loop (struct format_arg_list *list, unsigned int m) } free (list->repeated.element); list->repeated.element = newelement; + list->repeated.count = newcount; } } } diff --git a/gettext-tools/src/format-scheme.c b/gettext-tools/src/format-scheme.c index 90aa3aa93..4964644b4 100644 --- a/gettext-tools/src/format-scheme.c +++ b/gettext-tools/src/format-scheme.c @@ -779,6 +779,7 @@ rotate_loop (struct format_arg_list *list, unsigned int m) } free (list->repeated.element); list->repeated.element = newelement; + list->repeated.count = newcount; } } } diff --git a/gettext-tools/tests/Makefile.am b/gettext-tools/tests/Makefile.am index 2edb31138..0da888ab1 100644 --- a/gettext-tools/tests/Makefile.am +++ b/gettext-tools/tests/Makefile.am @@ -122,7 +122,7 @@ TESTS = gettext-1 gettext-2 \ xgettext-librep-1 xgettext-librep-2 xgettext-librep-3 \ xgettext-librep-stackovfl-1 xgettext-librep-stackovfl-2 \ xgettext-lisp-1 xgettext-lisp-2 xgettext-lisp-3 xgettext-lisp-4 \ - xgettext-lisp-5 \ + xgettext-lisp-5 xgettext-lisp-6 \ xgettext-lisp-stackovfl-1 xgettext-lisp-stackovfl-2 \ xgettext-lua-1 xgettext-lua-2 xgettext-lua-3 \ xgettext-lua-stackovfl-1 xgettext-lua-stackovfl-2 \ diff --git a/gettext-tools/tests/xgettext-lisp-6 b/gettext-tools/tests/xgettext-lisp-6 new file mode 100755 index 000000000..bcfbff7d6 --- /dev/null +++ b/gettext-tools/tests/xgettext-lisp-6 @@ -0,0 +1,24 @@ +#! /bin/sh +. "${srcdir=.}/init.sh"; path_prepend_ . ../src + +# Test Lisp support: lisp-format string with initial arguments and a loop. + +cat <<EOF > xg-ls-6.lisp +(gettext "~{~}~^~:*~@{~,v*~w~}") +EOF + +: ${XGETTEXT=xgettext} +${XGETTEXT} --omit-header --no-location -d xg-ls-6.tmp xg-ls-6.lisp || Exit 1 +LC_ALL=C tr -d '\r' < xg-ls-6.tmp.po > xg-ls-6.po || Exit 1 + +cat <<EOF > xg-ls-6.ok +#, lisp-format +msgid "~{~}~^~:*~@{~,v*~w~}" +msgstr "" +EOF + +: ${DIFF=diff} +${DIFF} xg-ls-6.ok xg-ls-6.po +result=$? + +exit $result |