Re: your mail

Vitaly Mayatskikh
2009-03-11T17:23:13Z

> 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