[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [libmicrohttpd] please correct type of "max" in MHD_ContentReaderCal
Re: [libmicrohttpd] please correct type of "max" in MHD_ContentReaderCallback
Tue, 21 Sep 2010 15:14:54 +0200
KMail/1.13.5 (Linux/2.6.32-trunk-vserver-amd64; KDE/4.4.5; x86_64; ; )
I've changed this as suggested in SVN HEAD. Note that this will now cause
(harmless) compiler warnings for software written using the old API.
On Tuesday 21 September 2010 11:37:05 Jim Meyering wrote:
> First, thank you for writing/maintaining libmicrohttpd.
> I noticed that when I used what I thought was the right type for "max",
> I'd get this sort of warning:
> rest.c:962: warning: passing argument 3 of
> 'MHD_create_response_from_callback' from incompatible pointer type
> /usr/include/microhttpd.h:1085: note: expected 'MHD_ContentReaderCallback'
> but argument is of type 'int (*)(void *, uint64_t, char *, size_t)'
> The current interface would require that I use "int",
> but it's a buffer size limit, and hence should have type size_t.
> Please use size_t instead.
> A public interface like microhttpd.h should not encourage/force
> client applications to use a signed type ("int") for a buffer size.
> Here's a proposed patch:
> Index: src/include/microhttpd.h
> --- src/include/microhttpd.h (revision 13036)
> +++ src/include/microhttpd.h (working copy)
> @@ -880,7 +880,7 @@
> (*MHD_ContentReaderCallback) (void *cls,
> uint64_t pos,
> char *buf,
> - int max);
> + size_t max);
> * This method is called by libmicrohttpd if we
> Otherwise, with the existing definition,
> applications must choose between using the wrong type ("int")
> for that parameter, and using the proper type ("size_t") but
> dealing with type-mismatch warnings/errors.
> Adding casts is risky, and so is simply turning off the warnings.
> Finally, I glanced through the sources and found minor problems
> in the test*/ directories. It'd be nice to correct tests like this:
> url = malloc (VERY_LONG);
> memset (url, 'a', VERY_LONG);
> so that they do not dereference NULL upon OOM.
> This is from src/testcurl/daemontest_long_header.c, but there are others.