There's no warnings as long as size_t and ssize_t variables are not compared.
len = -odp_cpumask_to_str(&mask, NULL, 0); This looks odd with the minus sign... Almost len -= ... ssize_t odp_cpumask_to_str(const odp_cpumask_t *mask, char *buf, ssize_t bufsz); This forces application to use signed buf length and implementation to check that bufsz >0. size_t odp_cpumask_to_str(const odp_cpumask_t *mask, char *str, size_t len) would be closer to snprintf() types and logic... which people already know. -Petri > -----Original Message----- > From: ext Ola Liljedahl [mailto:ola.liljed...@linaro.org] > Sent: Wednesday, January 28, 2015 2:47 PM > To: Savolainen, Petri (NSN - FI/Espoo) > Cc: LNG ODP Mailman List > Subject: Re: [lng-odp] odp_cpumask.h > > The following code compiles without warnings or errors: > #include <assert.h> > #include <stddef.h> > #include <stdio.h> > #include <stdlib.h> > #include <sys/types.h> > #include <odp_cpumask.h> > > void test(odp_cpumask_t mask) > { > /* Start with a small value so that a retry will be forced */ > size_t len = 1; > char *str; > > for (;;) { > ssize_t out; > str = malloc(len); > if (str == NULL) > perror("malloc"), exit(EXIT_FAILURE); > > out = odp_cpumask_to_str(&mask, str, len); > if (out > 0) /* success */ > break; > > /* failure, try with the recommended buffer size */ > free(str); > len = -out; > } > /* do something with str */ > free(str); > } > > void test2(odp_cpumask_t mask) > { > char *str; > size_t len; > ssize_t out; > /* Call with zero-length buffer, this will fail and return > required > * buffer size */ > len = -odp_cpumask_to_str(&mask, NULL, 0); > str = malloc(len); > if (str == NULL) > perror("malloc"), exit(EXIT_FAILURE); > out = odp_cpumask_to_str(&mask, str, len); > assert(out > 0); > /* do something with str */ > free(str); > } > > ssize_t odp_cpumask_to_str(const odp_cpumask_t *mask, char *buf, ssize_t > bufsz); > > gcc -c -std=c99 -W -Wall -ansi -pedantic test.c -I > platform/linux-generic/include/api/ > > Am I missing any important compiler flags this time? > > > On 28 January 2015 at 13:32, Savolainen, Petri (NSN - FI/Espoo) > <petri.savolai...@nsn.com> wrote: > >> (maybe your audio was breaking on call yesterday on that part). > >> I have tested mixing size_t and ssize_t and neither gcc nor clang > >> complained. I was using -Wall -ansi -pedantic. > > > > Missing -W from there ? -Wall is not enough... > > > > _______________________________________________ lng-odp mailing list lng-odp@lists.linaro.org http://lists.linaro.org/mailman/listinfo/lng-odp