Re: your mail
From: Vitaly Mayatskikh
Date: Wed Mar 11 2009 - 13:23:12 EST
> On Wed, 11 Mar 2009, Vitaly Mayatskikh wrote:
> >
> > (v)scnprintf says it should return 0 when size is 0, but doesn't do
> > so. Also size_t is unsigned, it can't be less then 0. Fix the code and
> > comments.
>
> That is bogus.
>
> The code really does (od "did"? Maybe you removed it) check for _smaller_
> than 0:
Well, (v)scnprintf says it returns 0 for size <= 0, but really returns
-1 for size == 0. I think, this code can't return 0 for size == 0:
i=vsnprintf(buf,size,fmt,args);
return (i >= size) ? (size - 1) : i;
Systemtap's script:
function test:long()
%{
char tmp[256];
long err;
err = scnprintf(tmp, 0, "%lu", (long)128);
THIS->__retvalue = err;
%}
probe begin
{
printf("scnprintf returns %d\n", test());
}
stap -g scnprintf.stp
scnprintf returns -1
--
wbr, Vitaly
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/