[Python-checkins] cpython: Issue #20142: Py_buffer variables generated by Argument Clinic are now
larry.hastings
python-checkins at python.org
Mon Jan 6 19:34:33 CET 2014
http://hg.python.org/cpython/rev/16ff19d1d367
changeset: 88325:16ff19d1d367
parent: 88321:44c4ba63631d
user: Larry Hastings <larry at hastings.org>
date: Mon Jan 06 10:34:00 2014 -0800
summary:
Issue #20142: Py_buffer variables generated by Argument Clinic are now
initialized with a default value.
files:
Misc/NEWS | 5 +++++
Modules/zlibmodule.c | 8 ++++----
Tools/clinic/clinic.py | 10 +++++++++-
3 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -13,6 +13,11 @@
Library
-------
+Tools/Demos
+-----------
+
+- Issue #20142: Py_buffer variables generated by Argument Clinic are now
+ initialized with a default value.
What's New in Python 3.4.0 Beta 2?
==================================
diff --git a/Modules/zlibmodule.c b/Modules/zlibmodule.c
--- a/Modules/zlibmodule.c
+++ b/Modules/zlibmodule.c
@@ -198,7 +198,7 @@
zlib_compress(PyModuleDef *module, PyObject *args)
{
PyObject *return_value = NULL;
- Py_buffer bytes;
+ Py_buffer bytes = {NULL, NULL, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL};
int group_right_1 = 0;
int level = 0;
@@ -227,7 +227,7 @@
static PyObject *
zlib_compress_impl(PyModuleDef *module, Py_buffer *bytes, int group_right_1, int level)
-/*[clinic checksum: f490708eff84be652b5ebe7fe622ab73ac12c888]*/
+/*[clinic checksum: 9f055a396620bc1a8a13d74c3496249528b32b0d]*/
{
PyObject *ReturnVal = NULL;
Byte *input, *output = NULL;
@@ -789,7 +789,7 @@
zlib_Decompress_decompress(PyObject *self, PyObject *args)
{
PyObject *return_value = NULL;
- Py_buffer data;
+ Py_buffer data = {NULL, NULL, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL};
unsigned int max_length = 0;
if (!PyArg_ParseTuple(args,
@@ -808,7 +808,7 @@
static PyObject *
zlib_Decompress_decompress_impl(compobject *self, Py_buffer *data, unsigned int max_length)
-/*[clinic checksum: 3599698948f5a712f5a8309491671cc2ce969d2c]*/
+/*[clinic checksum: 5b1e4f9f1ef8eca55fff78356f9df0c81232ed3b]*/
{
int err;
unsigned int old_length, length = DEFAULTALLOC;
diff --git a/Tools/clinic/clinic.py b/Tools/clinic/clinic.py
--- a/Tools/clinic/clinic.py
+++ b/Tools/clinic/clinic.py
@@ -1488,7 +1488,12 @@
declaration.append('\nPy_ssize_clean_t ')
declaration.append(self.length_name())
declaration.append(';')
- return "".join(declaration)
+ s = "".join(declaration)
+ # double up curly-braces, this string will be used
+ # as part of a format_map() template later
+ s = s.replace("{", "{{")
+ s = s.replace("}", "}}")
+ return s
def initialize(self):
"""
@@ -1742,6 +1747,9 @@
c_ignored_default = "{NULL, NULL, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL}"
def converter_init(self, *, types='bytes bytearray buffer', nullable=False):
+ if self.default != unspecified:
+ fail("There is no legal default value for Py_buffer ")
+ self.c_default = self.c_ignored_default
types = set(types.strip().split())
bytes_type = set(('bytes',))
bytearray_type = set(('bytearray',))
--
Repository URL: http://hg.python.org/cpython
More information about the Python-checkins
mailing list