On Wed, Sep 13, 2017 at 10:59:30AM -0700, Jonathan Nieder wrote: > I can confidentally say the intent in C99 in that passage is to > describe the type of the expression, not just the type of a variable > that can hold it. Doh. The problem is that I'm a moron. The copy_begin and copy_end values are _not_ pointers, they're size_t. That's why we have to use: contents + copy_begin as the buffer. So there is no ptrdiff_t involved at all, just a size_t. -Peff