summaryrefslogtreecommitdiff
path: root/Python
diff options
context:
space:
mode:
authorChristian Heimes <christian@python.org>2016-09-21 11:37:27 +0200
committerChristian Heimes <christian@python.org>2016-09-21 11:37:27 +0200
commitdcf5141d78a919ed53f1cd8acd2542c95be2e5a6 (patch)
tree858af368d2b5c8ff922e215c9ecb84bda7c900b3 /Python
parentc2731f5fa546cf50e023142653ac61af3aa463d0 (diff)
downloadcpython-dcf5141d78a919ed53f1cd8acd2542c95be2e5a6.tar.gz
va_end() all va_copy()ed va_lists.
Diffstat (limited to 'Python')
-rw-r--r--Python/getargs.c14
-rw-r--r--Python/modsupport.c14
2 files changed, 21 insertions, 7 deletions
diff --git a/Python/getargs.c b/Python/getargs.c
index cd80eda0e2..43656eb2aa 100644
--- a/Python/getargs.c
+++ b/Python/getargs.c
@@ -141,20 +141,26 @@ int
PyArg_VaParse(PyObject *args, const char *format, va_list va)
{
va_list lva;
+ int retval;
va_copy(lva, va);
- return vgetargs1(args, format, &lva, 0);
+ retval = vgetargs1(args, format, &lva, 0);
+ va_end(lva);
+ return retval;
}
int
_PyArg_VaParse_SizeT(PyObject *args, const char *format, va_list va)
{
va_list lva;
+ int retval;
va_copy(lva, va);
- return vgetargs1(args, format, &lva, FLAG_SIZE_T);
+ retval = vgetargs1(args, format, &lva, FLAG_SIZE_T);
+ va_end(lva);
+ return retval;
}
@@ -1405,6 +1411,7 @@ PyArg_VaParseTupleAndKeywords(PyObject *args,
va_copy(lva, va);
retval = vgetargskeywords(args, keywords, format, kwlist, &lva, 0);
+ va_end(lva);
return retval;
}
@@ -1430,6 +1437,7 @@ _PyArg_VaParseTupleAndKeywords_SizeT(PyObject *args,
retval = vgetargskeywords(args, keywords, format,
kwlist, &lva, FLAG_SIZE_T);
+ va_end(lva);
return retval;
}
@@ -1534,6 +1542,7 @@ _PyArg_VaParseTupleAndKeywordsFast(PyObject *args, PyObject *keywords,
va_copy(lva, va);
retval = vgetargskeywordsfast(args, keywords, parser, &lva, 0);
+ va_end(lva);
return retval;
}
@@ -1555,6 +1564,7 @@ _PyArg_VaParseTupleAndKeywordsFast_SizeT(PyObject *args, PyObject *keywords,
va_copy(lva, va);
retval = vgetargskeywordsfast(args, keywords, parser, &lva, FLAG_SIZE_T);
+ va_end(lva);
return retval;
}
diff --git a/Python/modsupport.c b/Python/modsupport.c
index bdaf8b22c5..aabee8fa59 100644
--- a/Python/modsupport.c
+++ b/Python/modsupport.c
@@ -467,8 +467,7 @@ va_build_value(const char *format, va_list va, int flags)
const char *f = format;
int n = countformat(f, '\0');
va_list lva;
-
- va_copy(lva, va);
+ PyObject *retval;
if (n < 0)
return NULL;
@@ -476,9 +475,14 @@ va_build_value(const char *format, va_list va, int flags)
Py_INCREF(Py_None);
return Py_None;
}
- if (n == 1)
- return do_mkvalue(&f, &lva, flags);
- return do_mktuple(&f, &lva, '\0', n, flags);
+ va_copy(lva, va);
+ if (n == 1) {
+ retval = do_mkvalue(&f, &lva, flags);
+ } else {
+ retval = do_mktuple(&f, &lva, '\0', n, flags);
+ }
+ va_end(lva);
+ return retval;
}