I suspect this is similar to another "recent" discussion about passing null
pointers to mem* library functions. C89 allowed zero or null. C99 seems to
forbid it. I'm going from memory here, can look at standards later if
desired
On Aug 20, 2015 8:08 AM, "Richard Hipp" <drh at sqlite.org> wrote:

> On 8/20/15, Bernhard Schommer <bernhardschommer at gmail.com> wrote:
> > Hi,
> >
> > the warning which is mentioned in the ticket
> > f51d9501800de5a0fb69d5048ce6662981b461ec still occurs also with newer gcc
> > versions. The ticket was closed after a gcc bug report was opened. The
> gcc
> > bug was closed due to a missing testcase.
> > I had a quick look at the problem and it seems that the warning is right
> > since in certain context and with optimizations enabled gcc can prove
> > that EXPR_FULLSIZE
> > - nSize == 0 and thus the triggered warning for this is correct.
>
> I cannot find anything in the memset() documentation that says that
> the third parameter must be greater than zero.  Am I missing
> something?  Do there exist implementions of memset() for which that is
> so?
>
> On the other hand, if all conforming implementations of memset() must
> work correctly even if their third argument is zero, why is gcc
> warning me about this?
>
> > Replacing
> > memset(&zAlloc[nSize], 0, EXPR_FULLSIZE-nSize);
> > By
> > if(EXPR_FULLSIZE-nSize > 0)
> >      memset(&zAlloc[nSize], 0, EXPR_FULLSIZE-nSize);
> > would remove the warning,
> >
> > Cheers,
> > -Bernhard
> > _______________________________________________
> > sqlite-users mailing list
> > sqlite-users at mailinglists.sqlite.org
> > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
> >
>
>
> --
> D. Richard Hipp
> drh at sqlite.org
> _______________________________________________
> sqlite-users mailing list
> sqlite-users at mailinglists.sqlite.org
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>

Reply via email to