summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2015-10-12 11:12:54 (GMT)
committerVictor Stinner <victor.stinner@gmail.com>2015-10-12 11:12:54 (GMT)
commitc29e29bed1ea1efc1a0cd3178fac96be4d763ecf (patch)
tree2066552a3753b1d77a8bbee66f806af18c5058b0
parentb031eaee3b099cfbfaa66ddddebf7b805fc87ea4 (diff)
downloadcpython-c29e29bed1ea1efc1a0cd3178fac96be4d763ecf.zip
cpython-c29e29bed1ea1efc1a0cd3178fac96be4d763ecf.tar.gz
cpython-c29e29bed1ea1efc1a0cd3178fac96be4d763ecf.tar.bz2
Relax _PyBytesWriter API
Don't require _PyBytesWriter pointer to be a "char *". Same change for _PyBytesWriter_WriteBytes() parameter. For example, binascii uses "unsigned char*".
-rw-r--r--Include/bytesobject.h14
-rw-r--r--Objects/bytesobject.c15
2 files changed, 14 insertions, 15 deletions
diff --git a/Include/bytesobject.h b/Include/bytesobject.h
index 2c4c4c4..b7a7c36 100644
--- a/Include/bytesobject.h
+++ b/Include/bytesobject.h
@@ -156,7 +156,7 @@ PyAPI_FUNC(void) _PyBytesWriter_Init(_PyBytesWriter *writer);
Return a bytes object.
Raise an exception and return NULL on error. */
PyAPI_FUNC(PyObject *) _PyBytesWriter_Finish(_PyBytesWriter *writer,
- char *str);
+ void *str);
/* Deallocate memory of a writer (clear its internal buffer). */
PyAPI_FUNC(void) _PyBytesWriter_Dealloc(_PyBytesWriter *writer);
@@ -164,22 +164,22 @@ PyAPI_FUNC(void) _PyBytesWriter_Dealloc(_PyBytesWriter *writer);
/* Allocate the buffer to write size bytes.
Return the pointer to the beginning of buffer data.
Raise an exception and return NULL on error. */
-PyAPI_FUNC(char*) _PyBytesWriter_Alloc(_PyBytesWriter *writer,
+PyAPI_FUNC(void*) _PyBytesWriter_Alloc(_PyBytesWriter *writer,
Py_ssize_t size);
/* Add *size* bytes to the buffer.
str is the current pointer inside the buffer.
Return the updated current pointer inside the buffer.
Raise an exception and return NULL on error. */
-PyAPI_FUNC(char*) _PyBytesWriter_Prepare(_PyBytesWriter *writer,
- char *str,
+PyAPI_FUNC(void*) _PyBytesWriter_Prepare(_PyBytesWriter *writer,
+ void *str,
Py_ssize_t size);
/* Write bytes.
Raise an exception and return NULL on error. */
-PyAPI_FUNC(char*) _PyBytesWriter_WriteBytes(_PyBytesWriter *writer,
- char *str,
- char *bytes,
+PyAPI_FUNC(void*) _PyBytesWriter_WriteBytes(_PyBytesWriter *writer,
+ void *str,
+ const void *bytes,
Py_ssize_t size);
#endif /* Py_LIMITED_API */
diff --git a/Objects/bytesobject.c b/Objects/bytesobject.c
index a75c54d..4b31271 100644
--- a/Objects/bytesobject.c
+++ b/Objects/bytesobject.c
@@ -3923,8 +3923,8 @@ _PyBytesWriter_CheckConsistency(_PyBytesWriter *writer, char *str)
#endif
}
-char*
-_PyBytesWriter_Prepare(_PyBytesWriter *writer, char *str, Py_ssize_t size)
+void*
+_PyBytesWriter_Prepare(_PyBytesWriter *writer, void *str, Py_ssize_t size)
{
Py_ssize_t allocated, pos;
@@ -3992,7 +3992,7 @@ _PyBytesWriter_Prepare(_PyBytesWriter *writer, char *str, Py_ssize_t size)
/* Allocate the buffer to write size bytes.
Return the pointer to the beginning of buffer data.
Raise an exception and return NULL on error. */
-char*
+void*
_PyBytesWriter_Alloc(_PyBytesWriter *writer, Py_ssize_t size)
{
/* ensure that _PyBytesWriter_Alloc() is only called once */
@@ -4011,7 +4011,7 @@ _PyBytesWriter_Alloc(_PyBytesWriter *writer, Py_ssize_t size)
}
PyObject *
-_PyBytesWriter_Finish(_PyBytesWriter *writer, char *str)
+_PyBytesWriter_Finish(_PyBytesWriter *writer, void *str)
{
Py_ssize_t pos;
PyObject *result;
@@ -4033,13 +4033,12 @@ _PyBytesWriter_Finish(_PyBytesWriter *writer, char *str)
else {
result = PyBytes_FromStringAndSize(writer->small_buffer, pos);
}
-
return result;
}
-char*
-_PyBytesWriter_WriteBytes(_PyBytesWriter *writer, char *str,
- char *bytes, Py_ssize_t size)
+void*
+_PyBytesWriter_WriteBytes(_PyBytesWriter *writer, void *str,
+ const void *bytes, Py_ssize_t size)
{
str = _PyBytesWriter_Prepare(writer, str, size);
if (str == NULL)