summaryrefslogtreecommitdiffstats
path: root/Objects/stringlib
diff options
context:
space:
mode:
authorEric Smith <eric@trueblade.com>2007-09-05 02:02:43 (GMT)
committerEric Smith <eric@trueblade.com>2007-09-05 02:02:43 (GMT)
commit45c078736e0fd64f21c90efd61d2cba9540a3d30 (patch)
treeb5f33dbca44e2d9b58583c1c8869da397684e54f /Objects/stringlib
parent11529195cae2438a3ac003babcb1b11af67c4037 (diff)
downloadcpython-45c078736e0fd64f21c90efd61d2cba9540a3d30.zip
cpython-45c078736e0fd64f21c90efd61d2cba9540a3d30.tar.gz
cpython-45c078736e0fd64f21c90efd61d2cba9540a3d30.tar.bz2
Simplified recursion logic. Modified variable name to match string.Formatter.
Diffstat (limited to 'Objects/stringlib')
-rw-r--r--Objects/stringlib/string_format.h22
1 files changed, 10 insertions, 12 deletions
diff --git a/Objects/stringlib/string_format.h b/Objects/stringlib/string_format.h
index ea8b0e7..6c3c1e6 100644
--- a/Objects/stringlib/string_format.h
+++ b/Objects/stringlib/string_format.h
@@ -29,7 +29,7 @@ typedef struct {
/* forward declaration for recursion */
static PyObject *
build_string(SubString *input, PyObject *args, PyObject *kwargs,
- int *recursion_level);
+ int recursion_depth);
@@ -792,7 +792,7 @@ static int
output_markup(SubString *field_name, SubString *format_spec,
int format_spec_needs_expanding, STRINGLIB_CHAR conversion,
OutputString *output, PyObject *args, PyObject *kwargs,
- int *recursion_level)
+ int recursion_depth)
{
PyObject *tmp = NULL;
PyObject *fieldobj = NULL;
@@ -818,7 +818,7 @@ output_markup(SubString *field_name, SubString *format_spec,
/* if needed, recurively compute the format_spec */
if (format_spec_needs_expanding) {
- tmp = build_string(format_spec, args, kwargs, recursion_level);
+ tmp = build_string(format_spec, args, kwargs, recursion_depth-1);
if (tmp == NULL)
goto done;
@@ -852,7 +852,7 @@ done:
*/
static int
do_markup(SubString *input, PyObject *args, PyObject *kwargs,
- OutputString *output, int *recursion_level)
+ OutputString *output, int recursion_depth)
{
MarkupIterator iter;
int format_spec_needs_expanding;
@@ -871,7 +871,7 @@ do_markup(SubString *input, PyObject *args, PyObject *kwargs,
if (field_name.ptr != field_name.end)
if (!output_markup(&field_name, &format_spec,
format_spec_needs_expanding, conversion, output,
- args, kwargs, recursion_level))
+ args, kwargs, recursion_depth))
return 0;
}
return result;
@@ -884,7 +884,7 @@ do_markup(SubString *input, PyObject *args, PyObject *kwargs,
*/
static PyObject *
build_string(SubString *input, PyObject *args, PyObject *kwargs,
- int *recursion_level)
+ int recursion_depth)
{
OutputString output;
PyObject *result = NULL;
@@ -893,8 +893,7 @@ build_string(SubString *input, PyObject *args, PyObject *kwargs,
output.obj = NULL; /* needed so cleanup code always works */
/* check the recursion level */
- (*recursion_level)--;
- if (*recursion_level < 0) {
+ if (recursion_depth <= 0) {
PyErr_SetString(PyExc_ValueError,
"Max string recursion exceeded");
goto done;
@@ -907,7 +906,7 @@ build_string(SubString *input, PyObject *args, PyObject *kwargs,
INITIAL_SIZE_INCREMENT))
goto done;
- if (!do_markup(input, args, kwargs, &output, recursion_level)) {
+ if (!do_markup(input, args, kwargs, &output, recursion_depth)) {
goto done;
}
@@ -921,7 +920,6 @@ build_string(SubString *input, PyObject *args, PyObject *kwargs,
output.obj = NULL;
done:
- (*recursion_level)++;
Py_XDECREF(output.obj);
return result;
}
@@ -940,10 +938,10 @@ do_string_format(PyObject *self, PyObject *args, PyObject *kwargs)
"{0:{1}}".format('abc', 's') # works
"{0:{1:{2}}}".format('abc', 's', '') # fails
*/
- int recursion_level = 2;
+ int recursion_depth = 2;
SubString_init(&input, STRINGLIB_STR(self), STRINGLIB_LEN(self));
- return build_string(&input, args, kwargs, &recursion_level);
+ return build_string(&input, args, kwargs, recursion_depth);
}