Commit 749a0d86 authored by Martin v. Löwis's avatar Martin v. Löwis

Do not release unallocated Tcl objects. Closes #117278 and #117167.

parent e98062ee
...@@ -572,13 +572,13 @@ Tkapp_Call(PyObject *self, PyObject *args) ...@@ -572,13 +572,13 @@ Tkapp_Call(PyObject *self, PyObject *args)
objv = objStore; objv = objStore;
if (args == NULL) if (args == NULL)
objc = 0; /* do nothing */;
else if (!PyTuple_Check(args)) { else if (!PyTuple_Check(args)) {
objc = 1;
objv[0] = AsObj(args); objv[0] = AsObj(args);
if (objv[0] == 0) if (objv[0] == 0)
goto finally; goto finally;
objc = 1;
Tcl_IncrRefCount(objv[0]); Tcl_IncrRefCount(objv[0]);
} }
else { else {
...@@ -588,6 +588,7 @@ Tkapp_Call(PyObject *self, PyObject *args) ...@@ -588,6 +588,7 @@ Tkapp_Call(PyObject *self, PyObject *args)
objv = (Tcl_Obj **)ckalloc(objc * sizeof(char *)); objv = (Tcl_Obj **)ckalloc(objc * sizeof(char *));
if (objv == NULL) { if (objv == NULL) {
PyErr_NoMemory(); PyErr_NoMemory();
objc = 0;
goto finally; goto finally;
} }
} }
...@@ -599,8 +600,12 @@ Tkapp_Call(PyObject *self, PyObject *args) ...@@ -599,8 +600,12 @@ Tkapp_Call(PyObject *self, PyObject *args)
break; break;
} }
objv[i] = AsObj(v); objv[i] = AsObj(v);
if (!objv[i]) if (!objv[i]) {
/* Reset objc, so it attempts to clear
objects only up to i. */
objc = i;
goto finally; goto finally;
}
Tcl_IncrRefCount(objv[i]); Tcl_IncrRefCount(objv[i]);
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment