On Sat, Jun 19, 2021 at 10:52:41AM -0400, Paul Smith wrote: > On Sat, 2021-06-19 at 15:31 +0100, Dmitrii Pasechnik wrote: > > On Fri, Jun 18, 2021 at 12:53:32PM -0400, Paul D. Smith wrote: > > > > > Follow-up Comment #1, bug #60798 (project make): > > > FWIW, this warning is not valid in this situation. The code is > > > correct; p will always be pointing into a valid buffer and never > > > pointing at the first character in that buffer, so p[-1] always > > > points to valid memory. > > > > It's undefined behaviour in C to point to such a location, isn't it? > > To point to which such location? As I said, we know for a fact that p > does not point at the first character of the array. It's clearly legal > in C to walk backwards through an array!! And referencing the previous > element in an array is certainly not a hack. > > I don't think I understand. p[] occupies a continuous memory area, starting from p[0], but p[-1] is not guaranteed by the standard to be accessible for you (well, unless you control the memory layout by placing p in a struct, not as the 1st member, but then why would you need p[-1] in the 1st place?)
What's unclear about it?