And C89 doesn't have the valid pointer requirement
On Aug 21, 2015 7:03 AM, "David Bennett" <davidb at pfxcorp.com> wrote:

> Addressing only standards compliance, the C99 (n1256) standard says as
> follows.
>
> 7.21.1 /2
> Where an argument declared as size_t n specifies the length of the array
> for
> a
> function, n can have the value zero on a call to that function. Unless
> explicitly stated
> otherwise in the description of a particular function in this subclause,
> pointer arguments
> on such a call shall still have valid values, as described in 7.1.4. On
> such
> a call, a
> function that locates a character finds no occurrence, a function that
> compares two
> character sequences returns zero, and a function that copies characters
> copies zero
> characters.
>
> Later versions of the standard contain similar wording.
>
> A zero value for the third argument of memset() is standards compliant. Any
> warning by any compiler is for the convenience of developers and may be
> safely disabled or ignored while remaining standards compliant.
>
> In my opinion, disabling or simply ignoring the warning are both legitimate
> choices. Modifying the code to suppress the warning is NOT.
>
> Regards
> David M Bennett FACS
>
> Andl - A New Database Language - andl.org
>
> -----Original Message-----
> From: sqlite-users-bounces at mailinglists.sqlite.org
> [mailto:sqlite-users-bounces at mailinglists.sqlite.org] On Behalf Of Scott
> Robison
> Sent: Friday, 21 August 2015 3:05 AM
> To: General Discussion of SQLite Database
> <sqlite-users at mailinglists.sqlite.org>
> Subject: Re: [sqlite] Compile warnings
>
> On Thu, Aug 20, 2015 at 10:46 AM, Scott Doctor <scott at scottdoctor.com>
> wrote:
>
> > My opinion is to keep it portable. The warning is there for a reason.
> > you are worried about performance yet are calling a function that does
> > nothing, which will take more memory cycles than a simple check for zero.
> >
>
> I didn't say don't make a change. I'm observing there are things to
> consider. In particular the optimization strategies that the SQLite team
> have pursued for several years now have been *tiny* little optimizations
> that would never be justifiable on their own but that really add up,
> particularly for small devices probably running on batteries.
>
>
> > Trying to memset a zero length is a bug, not the warning. Add an if
> > statement around it. If the variable is local, it will probably be
> > optimized as a register variable and a zero check of a register is a
> > single op-code.
> >
>
> Trying to memset a zero length buffer is not a bug if the length of the
> sequence of bytes that needs to be set is zero. C89 in particular does not
> disallow this use.
>
>
> > the problem with disabling warnings is that even if this instance is
> > not an error, some other part of the code may end up with the same
> > situation but is an error in the coding. I would prefer code that can
> > be compiled with all warnings turned on that gives no warnings than
> > have a potential problem because of a glitch in the code.
> >
>
> I don't think anyone called for disabling the warning. I think it should
> just be ignored in this case, just as I ignore warnings that are generated
> by Visual C++ when I compile SQLite there.
>
> --
> Scott Robison
> _______________________________________________
> sqlite-users mailing list
> sqlite-users at mailinglists.sqlite.org
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>
>
> _______________________________________________
> sqlite-users mailing list
> sqlite-users at mailinglists.sqlite.org
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>

Reply via email to