mirror of
https://github.com/python/cpython.git
synced 2025-07-19 01:05:26 +00:00
- Reindent a confusingly indented piece of code (no intended code changes
there) - Add missing DECREFs of inner-scope 'temp' variable - Add various missing DECREFs by changing 'return NULL' into 'goto onError' - Avoid double DECREF when last _PyUnicode_Resize() fails Coverity found one of the missing DECREFs, but oddly enough not the others.
This commit is contained in:
parent
318af47512
commit
a96affe1fc
1 changed files with 16 additions and 13 deletions
|
@ -7068,15 +7068,15 @@ PyObject *PyUnicode_Format(PyObject *format,
|
||||||
/* nothing to do */;
|
/* nothing to do */;
|
||||||
else if (PyString_Check(temp)) {
|
else if (PyString_Check(temp)) {
|
||||||
/* convert to string to Unicode */
|
/* convert to string to Unicode */
|
||||||
unicode = PyUnicode_Decode(PyString_AS_STRING(temp),
|
unicode = PyUnicode_Decode(PyString_AS_STRING(temp),
|
||||||
PyString_GET_SIZE(temp),
|
PyString_GET_SIZE(temp),
|
||||||
NULL,
|
NULL,
|
||||||
"strict");
|
"strict");
|
||||||
Py_DECREF(temp);
|
Py_DECREF(temp);
|
||||||
temp = unicode;
|
temp = unicode;
|
||||||
if (temp == NULL)
|
if (temp == NULL)
|
||||||
goto onError;
|
goto onError;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Py_DECREF(temp);
|
Py_DECREF(temp);
|
||||||
PyErr_SetString(PyExc_TypeError,
|
PyErr_SetString(PyExc_TypeError,
|
||||||
|
@ -7172,11 +7172,13 @@ PyObject *PyUnicode_Format(PyObject *format,
|
||||||
reslen += rescnt;
|
reslen += rescnt;
|
||||||
if (reslen < 0) {
|
if (reslen < 0) {
|
||||||
Py_XDECREF(temp);
|
Py_XDECREF(temp);
|
||||||
Py_DECREF(result);
|
PyErr_NoMemory();
|
||||||
return PyErr_NoMemory();
|
goto onError;
|
||||||
|
}
|
||||||
|
if (_PyUnicode_Resize(&result, reslen) < 0) {
|
||||||
|
Py_XDECREF(temp);
|
||||||
|
goto onError;
|
||||||
}
|
}
|
||||||
if (_PyUnicode_Resize(&result, reslen) < 0)
|
|
||||||
return NULL;
|
|
||||||
res = PyUnicode_AS_UNICODE(result)
|
res = PyUnicode_AS_UNICODE(result)
|
||||||
+ reslen - rescnt;
|
+ reslen - rescnt;
|
||||||
}
|
}
|
||||||
|
@ -7226,6 +7228,7 @@ PyObject *PyUnicode_Format(PyObject *format,
|
||||||
if (dict && (argidx < arglen) && c != '%') {
|
if (dict && (argidx < arglen) && c != '%') {
|
||||||
PyErr_SetString(PyExc_TypeError,
|
PyErr_SetString(PyExc_TypeError,
|
||||||
"not all arguments converted during string formatting");
|
"not all arguments converted during string formatting");
|
||||||
|
Py_XDECREF(temp);
|
||||||
goto onError;
|
goto onError;
|
||||||
}
|
}
|
||||||
Py_XDECREF(temp);
|
Py_XDECREF(temp);
|
||||||
|
@ -7237,12 +7240,12 @@ PyObject *PyUnicode_Format(PyObject *format,
|
||||||
goto onError;
|
goto onError;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_PyUnicode_Resize(&result, reslen - rescnt) < 0)
|
||||||
|
goto onError;
|
||||||
if (args_owned) {
|
if (args_owned) {
|
||||||
Py_DECREF(args);
|
Py_DECREF(args);
|
||||||
}
|
}
|
||||||
Py_DECREF(uformat);
|
Py_DECREF(uformat);
|
||||||
if (_PyUnicode_Resize(&result, reslen - rescnt) < 0)
|
|
||||||
goto onError;
|
|
||||||
return (PyObject *)result;
|
return (PyObject *)result;
|
||||||
|
|
||||||
onError:
|
onError:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue