I warned JD about that. Negative array indices are allowed by C (C 99 standard, 6.5.2.1, 6.5.6.8), provided that an array is effectively a pointer into another array, which is the case here. It's a dangerous programming practice, though.
I'm pretty sure we used to have a bug in a few drivers caused by this very thing on 64-bit systems, and when compiled as 64-bit a negative array index would kill it on the spot, regardless of how valid it was. Might have been an issue with that version of the compiler tho.