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/