]> granicus.if.org Git - python/commitdiff
bpo-32827: Fix usage of _PyUnicodeWriter_Prepare() in decoding errors handler. (GH...
authorSerhiy Storchaka <storchaka@gmail.com>
Tue, 13 Feb 2018 06:27:33 +0000 (08:27 +0200)
committerGitHub <noreply@github.com>
Tue, 13 Feb 2018 06:27:33 +0000 (08:27 +0200)
Objects/unicodeobject.c

index f5e4ab62a3333099ecd1e6880ab28580fd527a97..02334382cabe51275c5387fc7718f3e8eb8a3a46 100644 (file)
@@ -4256,7 +4256,7 @@ unicode_decode_call_errorhandler_writer(
     }
     if (need_to_grow) {
         writer->overallocate = 1;
-        if (_PyUnicodeWriter_Prepare(writer, writer->min_length,
+        if (_PyUnicodeWriter_Prepare(writer, writer->min_length - writer->pos,
                             PyUnicode_MAX_CHAR_VALUE(repunicode)) == -1)
             goto onError;
     }
@@ -6085,9 +6085,7 @@ _PyUnicode_DecodeUnicodeEscape(const char *s,
                 &writer)) {
             goto onError;
         }
-        if (_PyUnicodeWriter_Prepare(&writer, writer.min_length, 127) < 0) {
-            goto onError;
-        }
+        assert(end - s <= writer.size - writer.pos);
 
 #undef WRITE_ASCII_CHAR
 #undef WRITE_CHAR
@@ -6364,9 +6362,7 @@ PyUnicode_DecodeRawUnicodeEscape(const char *s,
                 &writer)) {
             goto onError;
         }
-        if (_PyUnicodeWriter_Prepare(&writer, writer.min_length, 127) < 0) {
-            goto onError;
-        }
+        assert(end - s <= writer.size - writer.pos);
 
 #undef WRITE_CHAR
     }