[Python-checkins] bpo-34436: Fix check that disables overallocation for the last fmt specifier (GH-8826)

Miss Islington (bot) webhook-mailer at python.org
Thu Aug 23 04:15:06 EDT 2018


https://github.com/python/cpython/commit/945771b3c7a08f0b2b875905d517a1566477bfaf
commit: 945771b3c7a08f0b2b875905d517a1566477bfaf
branch: 3.6
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: GitHub <noreply at github.com>
date: 2018-08-23T04:14:54-04:00
summary:

bpo-34436: Fix check that disables overallocation for the last fmt specifier (GH-8826)


Reported by Svace static analyzer.
(cherry picked from commit ccd99752675042bd5f67d332c5b0ed85ba1f2da3)

Co-authored-by: Alexey Izbyshev <izbyshev at ispras.ru>

files:
M Objects/bytesobject.c

diff --git a/Objects/bytesobject.c b/Objects/bytesobject.c
index 4950d01a6e49..26e59d1073c1 100644
--- a/Objects/bytesobject.c
+++ b/Objects/bytesobject.c
@@ -813,8 +813,8 @@ _PyBytes_FormatEx(const char *format, Py_ssize_t format_len,
                     goto error;
             }
 
-            if (fmtcnt < 0) {
-                /* last writer: disable writer overallocation */
+            if (fmtcnt == 0) {
+                /* last write: disable writer overallocation */
                 writer.overallocate = 0;
             }
 
@@ -1046,7 +1046,7 @@ _PyBytes_FormatEx(const char *format, Py_ssize_t format_len,
 
         /* If overallocation was disabled, ensure that it was the last
            write. Otherwise, we missed an optimization */
-        assert(writer.overallocate || fmtcnt < 0 || use_bytearray);
+        assert(writer.overallocate || fmtcnt == 0 || use_bytearray);
     } /* until end */
 
     if (argidx < arglen && !dict) {



More information about the Python-checkins mailing list