summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Hylton <jeremy@alum.mit.edu>2001-12-06 15:18:48 (GMT)
committerJeremy Hylton <jeremy@alum.mit.edu>2001-12-06 15:18:48 (GMT)
commit7802a53e38399e8df647f0633f18658b7bb1be4a (patch)
tree5fd7636a82cd20d811b77819fce9acb9e85281b9
parent2554dd993a86c7914bd7159c96b6517590a58561 (diff)
downloadcpython-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.
-rw-r--r--Objects/stringobject.c17
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) {