[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug-gettext] [PATCH 4/4] xg-js: fix end-of string miss bug due to backs
From: |
Andreas Stricker |
Subject: |
[bug-gettext] [PATCH 4/4] xg-js: fix end-of string miss bug due to backslashes |
Date: |
Wed, 24 Apr 2013 20:37:58 +0200 |
---
gettext-tools/src/x-javascript.c | 2 +-
gettext-tools/tests/xgettext-javascript-5 | 78 +++++++++++++++++++++++++++++++
2 files changed, 79 insertions(+), 1 deletion(-)
create mode 100755 gettext-tools/tests/xgettext-javascript-5
diff --git a/gettext-tools/src/x-javascript.c b/gettext-tools/src/x-javascript.c
index 095a384..2c2ac2b 100644
--- a/gettext-tools/src/x-javascript.c
+++ b/gettext-tools/src/x-javascript.c
@@ -1009,7 +1009,7 @@ phase7_getuc (int quote_char, unsigned int
*backslash_counter)
case '\n':
continue;
case '\\':
- ++*backslash_counter;
+ *backslash_counter = 0;
return UNICODE (c);
case '\'': case '"':
*backslash_counter = 0;
diff --git a/gettext-tools/tests/xgettext-javascript-5
b/gettext-tools/tests/xgettext-javascript-5
new file mode 100755
index 0000000..6e6164d
--- /dev/null
+++ b/gettext-tools/tests/xgettext-javascript-5
@@ -0,0 +1,78 @@
+#!/bin/sh
+
+# Test of JavaScript Unicode support.
+
+tmpfiles=""
+trap 'rm -fr $tmpfiles' 1 2 3 15
+
+tmpfiles="$tmpfiles xg-js-5.js"
+cat <<\EOF > xg-js-5.js
+// the following except is stolen from json2.js
+var cx =
/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+ escapable =
/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+ gap,
+ txt1 = _("Expected translation string #1"),
+ indent,
+ meta = { // table of character substitutions
+ '\b': '\\b',
+ '\t': '\\t',
+ '\n': '\\n',
+ '\f': '\\f',
+ '\r': '\\r',
+ '"' : '\\"',
+ '\\': '\\\\' + _("Expected translation string #2")
+ },
+ txt2 = _("Expected translation string #3"),
+ rep;
+var matched = curnodepath.match('^\\'+path+'\\/([\\w\\s]+)') \
+ + _("Expected translation string #4");
+EOF
+
+tmpfiles="$tmpfiles xg-js-5.err xg-js-5.tmp xg-js-5.pot"
+: ${XGETTEXT=xgettext}
+${XGETTEXT} --add-comments --no-location -o xg-js-5.tmp xg-js-5.js
2>xg-js-5.err
+test $? = 0 || { cat xg-js-5.err; rm -fr $tmpfiles; exit 1; }
+# Don't simplify this to "grep ... < xg-js-5.tmp", otherwise OpenBSD 4.0 grep
+# only outputs "Binary file (standard input) matches".
+cat xg-js-5.tmp | grep -v 'POT-Creation-Date' | LC_ALL=C tr -d '\r' >
xg-js-5.pot
+
+tmpfiles="$tmpfiles xg-js-5.ok"
+cat <<\EOF > xg-js-5.ok
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <address@hidden>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <address@hidden>\n"
+"Language-Team: LANGUAGE <address@hidden>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "Expected translation string #1"
+msgstr ""
+
+msgid "Expected translation string #2"
+msgstr ""
+
+msgid "Expected translation string #3"
+msgstr ""
+
+msgid "Expected translation string #4"
+msgstr ""
+EOF
+
+: ${DIFF=diff}
+${DIFF} xg-js-5.ok xg-js-5.pot
+result=$?
+
+rm -fr $tmpfiles
+
+exit $result
--
1.8.2.1