diff options
author | Jeremy Hylton <jeremy@alum.mit.edu> | 2001-12-06 15:18:48 (GMT) |
---|---|---|
committer | Jeremy Hylton <jeremy@alum.mit.edu> | 2001-12-06 15:18:48 (GMT) |
commit | 7802a53e38399e8df647f0633f18658b7bb1be4a (patch) | |
tree | 5fd7636a82cd20d811b77819fce9acb9e85281b9 /Objects/stringobject.c | |
parent | 2554dd993a86c7914bd7159c96b6517590a58561 (diff) | |
download | cpython-7802a53e38399e8df647f0633f18658b7bb1be4a.zip cpython-7802a53e38399e8df647f0633f18658b7bb1be4a.tar.gz cpython-7802a53e38399e8df647f0633f18658b7bb1be4a.tar.bz2 |
Little stuff.
Add a missing DECREF in an obscure corner. If the str() or repr() of
an object passed to a string interpolation -- e.g. "%s" % obj --
returns a non-string, the returned object was leaked.
Repair an indentation glitch.
Replace a bunch of PyString_AsString() calls (and their ilk) with
macros.
Diffstat (limited to 'Objects/stringobject.c')
-rw-r--r-- | Objects/stringobject.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/Objects/stringobject.c b/Objects/stringobject.c index 86e0ea7..cb0e20b 100644 --- a/Objects/stringobject.c +++ b/Objects/stringobject.c @@ -3146,15 +3146,15 @@ PyString_Format(PyObject *format, PyObject *args) return NULL; } orig_args = args; - fmt = PyString_AsString(format); - fmtcnt = PyString_Size(format); + fmt = PyString_AS_STRING(format); + fmtcnt = PyString_GET_SIZE(format); reslen = rescnt = fmtcnt + 100; result = PyString_FromStringAndSize((char *)NULL, reslen); if (result == NULL) return NULL; res = PyString_AsString(result); if (PyTuple_Check(args)) { - arglen = PyTuple_Size(args); + arglen = PyTuple_GET_SIZE(args); argidx = 0; } else { @@ -3170,7 +3170,7 @@ PyString_Format(PyObject *format, PyObject *args) reslen += rescnt; if (_PyString_Resize(&result, reslen) < 0) return NULL; - res = PyString_AsString(result) + res = PyString_AS_STRING(result) + reslen - rescnt; --rescnt; } @@ -3351,7 +3351,7 @@ PyString_Format(PyObject *format, PyObject *args) } #endif if (c == 's') - temp = PyObject_Str(v); + temp = PyObject_Str(v); else temp = PyObject_Repr(v); if (temp == NULL) @@ -3359,10 +3359,11 @@ PyString_Format(PyObject *format, PyObject *args) if (!PyString_Check(temp)) { PyErr_SetString(PyExc_TypeError, "%s argument has non-string str()"); + Py_DECREF(temp); goto error; } - pbuf = PyString_AsString(temp); - len = PyString_Size(temp); + pbuf = PyString_AS_STRING(temp); + len = PyString_GET_SIZE(temp); if (prec >= 0 && len > prec) len = prec; break; @@ -3441,7 +3442,7 @@ PyString_Format(PyObject *format, PyObject *args) reslen += rescnt; if (_PyString_Resize(&result, reslen) < 0) return NULL; - res = PyString_AsString(result) + res = PyString_AS_STRING(result) + reslen - rescnt; } if (sign) { |