bug-gettext
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]