]> granicus.if.org Git - python/commitdiff
Properly implement Georg Brandl's Patch #1185447 to the 2.5 maintainance branch
authorKristján Valur Jónsson <kristjan@ccpgames.com>
Sun, 22 Apr 2007 10:18:46 +0000 (10:18 +0000)
committerKristján Valur Jónsson <kristjan@ccpgames.com>
Sun, 22 Apr 2007 10:18:46 +0000 (10:18 +0000)
Modules/binascii.c

index 5e0f86dc131327d89ea88029e002bab85c9fb978..91309f673bb4e417a8bf04948ff4bb4b4d390b8c 100644 (file)
@@ -1160,13 +1160,14 @@ binascii_b2a_qp (PyObject *self, PyObject *args, PyObject *kwargs)
                if ((data[in] > 126) ||
                    (data[in] == '=') ||
                    (header && data[in] == '_') ||
-                   ((data[in] == '.') && (linelen == 1)) ||
+                   ((data[in] == '.') && (linelen == 0) &&
+                    (data[in+1] == '\n' || data[in+1] == '\r' || data[in+1] == 0)) ||
                    (!istext && ((data[in] == '\r') || (data[in] == '\n'))) ||
                    ((data[in] == '\t' || data[in] == ' ') && (in + 1 == datalen)) ||
                    ((data[in] < 33) &&
                     (data[in] != '\r') && (data[in] != '\n') &&
-                    (!quotetabs ||
-                     (quotetabs && ((data[in] != '\t') && (data[in] != ' '))))))
+                    (quotetabs ||
+                       (!quotetabs && ((data[in] != '\t') && (data[in] != ' '))))))
                {
                        if ((linelen + 3) >= MAXLINESIZE) {
                                linelen = 0;
@@ -1231,13 +1232,14 @@ binascii_b2a_qp (PyObject *self, PyObject *args, PyObject *kwargs)
                if ((data[in] > 126) ||
                    (data[in] == '=') ||
                    (header && data[in] == '_') ||
-                   ((data[in] == '.') && (linelen == 1)) ||
+                   ((data[in] == '.') && (linelen == 0) &&
+                    (data[in+1] == '\n' || data[in+1] == '\r' || data[in+1] == 0)) ||
                    (!istext && ((data[in] == '\r') || (data[in] == '\n'))) ||
                    ((data[in] == '\t' || data[in] == ' ') && (in + 1 == datalen)) ||
                    ((data[in] < 33) &&
                     (data[in] != '\r') && (data[in] != '\n') &&
-                    (!quotetabs ||
-                     (quotetabs && ((data[in] != '\t') && (data[in] != ' '))))))
+                    (quotetabs ||
+                       (!quotetabs && ((data[in] != '\t') && (data[in] != ' '))))))
                {
                        if ((linelen + 3 )>= MAXLINESIZE) {
                                odata[out++] = '=';