On Fri, 21 Jan 2022 at 11:36, Timothe Litt via curl-library <curl-library@lists.haxx.se> wrote: > > Casting isn't the answer. Read the error carefully. You're returning a > size_t (integer) from a function declared to return a function pointer. The > pointer is supposed to be to a function that returns a size_t. > > multiplying 2 size_t variables results in a size_t, not a function pointer. > > curl_write_callback declares a pointer to the callback function. Your > function (as in the example) needs to be the actual function - I assumed that > was obvious. Sorry that I wasn't explicit. > > So your callback wants to be a > > typedef size_t (curl_write_callback_action)(char *buffer, > size_t size, > size_t nitems, > void *outstream); > > note the omitted "*" vs. the original. > > Perhaps curl.h should include typedefs for the callback actions as well as > for the pointers...
Thanks for time here Timothe (sorry, I shortened to TIm before). So confirm, the only difference in the example vs my usage is the last argument to my callback isn't a pointer to void, but to json_t. Switching that to void removes the error: This is fine, which made me look extra hard at my function: gcc -Wall -Werror -Wextra -Wpedantic -pedantic -Wformat=2 -Wno-unused-parameter -Wshadow -Wwrite-strings -Wstrict-prototypes -Wold-style-definition -Wredundant-decls -Wnested-externs -Wmissing-include-dirs -std=c18 -D_FORTIFY_SOURCE=2 -fpie -fpic -g3 -O2 -fstack-protector-strong -grecord-gcc-switches -Werror=format-security -Werror=implicit-function-declaration -Wmisleading-indentation -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -g -O2 -o gitmemory gitmemory.c -lcurl Mine was: static size_t curl_to_jansson_to_version(void *buffer, size_t size, size_t nmemb, json_t *json) { and is now: static size_t curl_to_jansson_to_version(void *buffer, size_t size, size_t nmemb, void *json) { so the error has gone. Thanks for explaining. Gavin. -- Kind Regards, Gavin Henry. https://sentrypeer.org -- Unsubscribe: https://lists.haxx.se/listinfo/curl-library Etiquette: https://curl.haxx.se/mail/etiquette.html