[pypy-svn] r16242 - pypy/dist/pypy/module/_codecs

ale at codespeak.net ale at codespeak.net
Tue Aug 23 10:15:28 CEST 2005


Author: ale
Date: Tue Aug 23 10:15:27 2005
New Revision: 16242

Modified:
   pypy/dist/pypy/module/_codecs/app_codecs.py
Log:
(Jakob, Anders)
test_codecs pass

The logic for partial decoding of utf-8 and utf-16 was reversed 

Modified: pypy/dist/pypy/module/_codecs/app_codecs.py
==============================================================================
--- pypy/dist/pypy/module/_codecs/app_codecs.py	(original)
+++ pypy/dist/pypy/module/_codecs/app_codecs.py	Tue Aug 23 10:15:27 2005
@@ -161,10 +161,13 @@
     v = s[1:-1]
     return v,len(v)
 
-def utf_8_decode( data,errors='strict',final=None):
+def utf_8_decode( data,errors='strict',final=0):
     """None
     """
-    res,consumed = PyUnicode_DecodeUTF8Stateful(data, len(data), errors, final)
+    consumed = len(data)
+    if final:
+       consumed = 0
+    res,consumed = PyUnicode_DecodeUTF8Stateful(data, len(data), errors, consumed)
     res = u''.join(res)
     return res, consumed
 
@@ -199,7 +202,10 @@
 def utf_16_decode( data,errors='strict',final=None):
     """None
     """
-    res,consumed,byteorder = PyUnicode_DecodeUTF16Stateful(data,len(data),errors)
+    consumed = len(data)
+    if final:
+      consumed = 0
+    res,consumed,byteorder = PyUnicode_DecodeUTF16Stateful(data,len(data),errors,'native',consumed)
     res = ''.join(res)
     return res, consumed
 
@@ -287,7 +293,10 @@
        bm = 'little'
     else:
        bm = 'big'
-    res,consumed,byteorder = PyUnicode_DecodeUTF16Stateful(data,len(data),errors,bm)
+    consumed = len(data)
+    if final:
+       consumed = 0
+    res,consumed,byteorder = PyUnicode_DecodeUTF16Stateful(data,len(data),errors,bm,consumed)
     res = ''.join(res)
     return res, consumed, byteorder
 
@@ -416,14 +425,20 @@
 def utf_16_le_decode( data,errors='strict',byteorder=0, final = 0):
     """None
     """
-    res,consumed,byteorder = PyUnicode_DecodeUTF16Stateful(data,len(data),errors,'little')
+    consumed = len(data)
+    if final:
+       consumed = 0
+    res,consumed,byteorder = PyUnicode_DecodeUTF16Stateful(data,len(data),errors,'little',consumed)
     res = u''.join(res)
     return res, consumed
 
 def utf_16_be_decode( data,errors='strict',byteorder=0, final = 0):
     """None
     """
-    res, consumed,byteorder = PyUnicode_DecodeUTF16Stateful(data,len(data),errors,'big')
+    consumed = len(data)
+    if final:
+       consumed = 0
+    res,consumed,byteorder = PyUnicode_DecodeUTF16Stateful(data,len(data),errors,'big',consumed)
     res = u''.join(res)
     return res, consumed
 
@@ -1114,7 +1129,7 @@
                 endinpos = size 
                 res = unicode_call_errorhandler(
                                     errors, "utf8", errmsg,
-                                    s,  startinpos, endinpos)
+			            s,  startinpos, endinpos)
                 p += res[0]
                 pos = res[1]
         if n == 0:
@@ -1249,7 +1264,7 @@
 
     if (consumed):
         consumed = pos
-    return p, consumed
+    return p, pos # consumed
 
 def PyUnicode_EncodeUTF8(s,size,errors):
 



More information about the Pypy-commit mailing list