Author: Antonio Cuni <[email protected]>
Branch: fastjson
Changeset: r65070:3659a717d8e8
Date: 2013-06-28 16:11 +0200
http://bitbucket.org/pypy/pypy/changeset/3659a717d8e8/

Log:    test&fix for a trailing comma when parsing an array

diff --git a/pypy/module/_fastjson/interp_decoder.py 
b/pypy/module/_fastjson/interp_decoder.py
--- a/pypy/module/_fastjson/interp_decoder.py
+++ b/pypy/module/_fastjson/interp_decoder.py
@@ -239,11 +239,11 @@
         start = i
         count = 0
         i = self.skip_whitespace(start)
+        if self.ll_chars[i] == ']':
+            self.pos = i+1
+            return w_list
+        #
         while True:
-            ch = self.ll_chars[i]
-            if ch == ']':
-                self.pos = i+1
-                return w_list
             w_item = self.decode_any(i)
             i = self.pos
             self.space.call_method(w_list, 'append', w_item)
@@ -267,11 +267,10 @@
         w_dict = self.space.newdict()
         #
         i = self.skip_whitespace(i)
-        ch = self.ll_chars[i]
-        if ch == '}':
+        if self.ll_chars[i] == '}':
             self.pos = i+1
             return w_dict
-
+        #
         while True:
             # parse a key: value
             self.last_type = TYPE_UNKNOWN
diff --git a/pypy/module/_fastjson/test/test__fastjson.py 
b/pypy/module/_fastjson/test/test__fastjson.py
--- a/pypy/module/_fastjson/test/test__fastjson.py
+++ b/pypy/module/_fastjson/test/test__fastjson.py
@@ -166,7 +166,8 @@
         assert _fastjson.loads('[1, 2]') == [1, 2]
         raises(ValueError, "_fastjson.loads('[1: 2]')")
         raises(ValueError, "_fastjson.loads('[1, 2')")
-
+        raises(ValueError, """_fastjson.loads('["extra comma",]')""")
+        
     def test_unicode_surrogate_pair(self):
         import _fastjson
         expected = u'z\U0001d120x'
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to