summary refs log tree commit diff
path: root/pkgs/development/python-modules/ruamel-yaml-clib/fix-incompatible-function-pointers.patch
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/python-modules/ruamel-yaml-clib/fix-incompatible-function-pointers.patch')
-rw-r--r--pkgs/development/python-modules/ruamel-yaml-clib/fix-incompatible-function-pointers.patch79
1 files changed, 79 insertions, 0 deletions
diff --git a/pkgs/development/python-modules/ruamel-yaml-clib/fix-incompatible-function-pointers.patch b/pkgs/development/python-modules/ruamel-yaml-clib/fix-incompatible-function-pointers.patch
new file mode 100644
index 00000000000..99debf22e5a
--- /dev/null
+++ b/pkgs/development/python-modules/ruamel-yaml-clib/fix-incompatible-function-pointers.patch
@@ -0,0 +1,79 @@
+Based on https://sourceforge.net/p/ruamel-yaml-clib/code/merge-requests/4/ with additions
+for `input_handler` and `output_handler`.
+
+--- a/_ruamel_yaml.pxd
++++ b/_ruamel_yaml.pxd
+@@ -2,15 +2,15 @@
+ cdef extern from "_ruamel_yaml.h":
+ 
+     void malloc(int l)
+-    void memcpy(char *d, char *s, int l)
++    void memcpy(unsigned char *d, char *s, int l)
+     int strlen(char *s)
+     int PyString_CheckExact(object o)
+     int PyUnicode_CheckExact(object o)
+     char *PyString_AS_STRING(object o)
+     int PyString_GET_SIZE(object o)
+-    object PyString_FromStringAndSize(char *v, int l)
++    object PyString_FromStringAndSize(unsigned char *v, size_t l)
+     object PyUnicode_FromString(char *u)
+-    object PyUnicode_DecodeUTF8(char *u, int s, char *e)
++    object PyUnicode_DecodeUTF8(unsigned char *u, size_t s, char *e)
+     object PyUnicode_AsUTF8String(object o)
+     int PY_MAJOR_VERSION
+ 
+@@ -85,11 +85,11 @@
+         YAML_MAPPING_START_EVENT
+         YAML_MAPPING_END_EVENT
+ 
+-    ctypedef int yaml_read_handler_t(void *data, char *buffer,
+-            int size, int *size_read) except 0
+-
+-    ctypedef int yaml_write_handler_t(void *data, char *buffer,
+-            int size) except 0
++    ctypedef int yaml_read_handler_t(void *data, unsigned char *buffer,
++            size_t size, size_t *size_read) except 0
++
++    ctypedef int yaml_write_handler_t(void *data, unsigned char *buffer,
++            size_t size) except 0
+ 
+     ctypedef struct yaml_mark_t:
+         int index
+@@ -112,7 +112,7 @@
+         char *handle
+         char *suffix
+     ctypedef struct _yaml_token_scalar_data_t:
+-        char *value
++        unsigned char *value
+         int length
+         yaml_scalar_style_t style
+     ctypedef struct _yaml_token_version_directive_data_t:
+@@ -151,7 +151,7 @@
+     ctypedef struct _yaml_event_scalar_data_t:
+         char *anchor
+         char *tag
+-        char *value
++        unsigned char *value
+         int length
+         int plain_implicit
+         int quoted_implicit
+--- a/_ruamel_yaml.pyx
++++ b/_ruamel_yaml.pyx
+@@ -904,7 +904,7 @@
+                 raise error
+         return 1
+
+-cdef int input_handler(void *data, char *buffer, int size, int *read) except 0:
++cdef int input_handler(void *data, unsigned char *buffer, size_t size, size_t *read) except 0:
+     cdef CParser parser
+     parser = <CParser>data
+     if parser.stream_cache is None:
+@@ -1514,7 +1514,7 @@
+             self.ascend_resolver()
+         return 1
+
+-cdef int output_handler(void *data, char *buffer, int size) except 0:
++cdef int output_handler(void *data, unsigned char *buffer, size_t size) except 0:
+     cdef CEmitter emitter
+     emitter = <CEmitter>data
+     if emitter.dump_unicode == 0: