resholve: fix build of oil-pyyajl with clang 16

Fixes several incompatible function pointer conversion errors by
updating the function definitions and casts.
This commit is contained in:
Randy Eckenrode 2023-11-08 17:48:06 -05:00
parent 75f3285530
commit 1cd0d4b62d
No known key found for this signature in database
GPG Key ID: 64C1CD4EC2A600D9
2 changed files with 46 additions and 0 deletions

View File

@ -0,0 +1,42 @@
diff -ur a/decoder.c b/decoder.c
--- a/decoder.c 1980-01-02 00:00:00.000000000 -0500
+++ b/decoder.c 2023-11-08 17:42:43.981838074 -0500
@@ -94,7 +94,7 @@
return PlaceObject(ctx, PyBool_FromLong((long)(value)));
}
-static int handle_number(void *ctx, const char *value, unsigned int length)
+static int handle_number(void *ctx, const char *value, size_t length)
{
//fprintf(stderr, "handle_number: ");
//fwrite(value, length, 1, stderr);
@@ -127,7 +127,7 @@
return status;
}
-static int handle_string(void *ctx, const unsigned char *value, unsigned int length)
+static int handle_string(void *ctx, const unsigned char *value, size_t length)
{
return PlaceObject(ctx, PyString_FromStringAndSize((char *)value, length));
}
@@ -142,7 +142,7 @@
return success;
}
-static int handle_dict_key(void *ctx, const unsigned char *value, unsigned int length)
+static int handle_dict_key(void *ctx, const unsigned char *value, size_t length)
{
PyObject *object = PyString_FromStringAndSize((const char *) value, length);
diff -ur a/yajl.c b/yajl.c
--- a/yajl.c 1980-01-02 00:00:00.000000000 -0500
+++ b/yajl.c 2023-11-08 17:41:18.781350335 -0500
@@ -161,7 +161,7 @@
}
static struct PyMethodDef yajl_methods[] = {
- {"dumps", (PyCFunctionWithKeywords)(py_dumps), METH_VARARGS | METH_KEYWORDS,
+ {"dumps", (PyCFunction)(py_dumps), METH_VARARGS | METH_KEYWORDS,
"yajl.dumps(obj [, indent=None])\n\n\
Returns an encoded JSON string of the specified `obj`\n\
\n\

View File

@ -42,6 +42,10 @@ rec {
hash = "sha256-H3GKN0Pq1VFD5+SWxm8CXUVO7zAyj/ngKVmDaG/aRT4=";
fetchSubmodules = true;
};
patches = [
# Fixes several incompatible function pointer conversions, which are errors in clang 16.
./0014-clang_incompatible_function_pointer_conversions.patch
];
# just for submodule IIRC
nativeBuildInputs = [ git ];
};