]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Relax _PyBytesWriter API
authorVictor Stinner <victor.stinner@gmail.com>
Mon, 12 Oct 2015 11:12:54 +0000 (13:12 +0200)
committerVictor Stinner <victor.stinner@gmail.com>
Mon, 12 Oct 2015 11:12:54 +0000 (13:12 +0200)
Don't require _PyBytesWriter pointer to be a "char *". Same change for
_PyBytesWriter_WriteBytes() parameter.

For example, binascii uses "unsigned char*".

Include/bytesobject.h
Objects/bytesobject.c

index 2c4c4c4fd47fe223105fd41e49d0a809cddc1f78..b7a7c36bcbb5a1468e5e409eab5f6c92a19de76e 100644 (file)
@@ -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 */
 
index a75c54d7efd1eb04d0463ea470d86a9f934e82a6..4b312717cfb3c2e03c5761fb1ae732c02a1c2a2a 100644 (file)
@@ -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)