]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Bug #1301: fixed a bad assert in _tkinter.
authorGuido van Rossum <guido@python.org>
Thu, 3 Jan 2008 23:54:04 +0000 (23:54 +0000)
committerGuido van Rossum <guido@python.org>
Thu, 3 Jan 2008 23:54:04 +0000 (23:54 +0000)
Misc/NEWS
Modules/_tkinter.c

index 2a4b72223f2155a012846a78ef3e768ae76d3839..5ea88f27901d070c306f1ad387e15d2eafd56320 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -907,6 +907,8 @@ Library
 Extension Modules
 -----------------
 
+- Bug #1301: Bad assert in _tkinter fixed.
+
 - Added bdist_wininst executable for VS 2008.
 
 - Bug #1604: collections.deque.__init__(iterable) now clears any prior contents
index 3cef4e73a81b25f68c1f5bc5d3e48a654ea602ff..4308773419cfd01634528f936ee31a32d016d969 100644 (file)
@@ -936,10 +936,12 @@ AsObj(PyObject *value)
                /* This #ifdef assumes that Tcl uses UCS-2.
                   See TCL_UTF_MAX test above. */
 #if defined(Py_UNICODE_WIDE) && TCL_UTF_MAX == 3
-               Tcl_UniChar *outbuf;
+               Tcl_UniChar *outbuf = NULL;
                Py_ssize_t i;
-               assert(size < size * sizeof(Tcl_UniChar));
-               outbuf = (Tcl_UniChar*)ckalloc(size * sizeof(Tcl_UniChar));
+               size_t allocsize = ((size_t)size) * sizeof(Tcl_UniChar);
+               if (allocsize >= size)
+                       outbuf = (Tcl_UniChar*)ckalloc(allocsize);
+               /* Else overflow occurred, and we take the next exit */
                if (!outbuf) {
                        PyErr_NoMemory();
                        return NULL;