From bb57c7637a04ce5f980c71cb42b1b5ef089a3a0f Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Tue, 14 Mar 2023 02:41:27 +0100 Subject: 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. --- gettext-tools/src/format-lisp.c | 1 + gettext-tools/src/format-scheme.c | 1 + gettext-tools/tests/Makefile.am | 2 +- gettext-tools/tests/xgettext-lisp-6 | 24 ++++++++++++++++++++++++ 4 files changed, 27 insertions(+), 1 deletion(-) create mode 100755 gettext-tools/tests/xgettext-lisp-6 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 < 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 < 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 -- cgit v1.2.1