<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Jun 1, 2015 at 10:35 AM, Joerg Sonnenberger <span dir="ltr"><<a href="mailto:joerg@britannica.bec.de" target="_blank">joerg@britannica.bec.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Mon, Jun 01, 2015 at 09:57:17AM -0700, Reid Kleckner wrote:<br>
> Why should memset / memcpy be attribute nonnull? Is there standardese that<br>
> supports that?<br>
<br>
</span>The generic entry text of the standard section. IMO this is a standard<br>
bug and someone should *please* get it fixed. It is ridiculous that zero<br>
sized operations are considered UB.<br></blockquote><div><br></div><div>That would require a change to the C standard, and, as far as I know, there are no current plans to issue a revised C standard.</div><div><br></div><div>I *suppose* that we could change it in the C++ standard, but I doubt that there would be any support on the committee for making std::memcpy different from ::memcpy.</div><div><br></div><div>-- Marshall</div><div><br></div><div>P.S.   recent gcc (at least 4.8.x and later) make optimizations based on this UB (i.e, if you pass a pointer to memcpy, then it can't be NULL).</div><div><br></div></div><br></div></div>