Hmm... it seems the right-shift operator masks the shift with the number of bits in the type of the operand...
| if( (tmp>>((l-1)*8)) & ~0xff ) | sprintf_error(fs, "Length of string to %%%"PRINTPTRDIFFT"dH " | "too large: %"PRINTPTRDIFFT"d:%"PRINTPTRDIFFT"d.\n", | l, tmp, (tmp>>((l-1)*8)));
==>
string q = "foo"*300; sizeof(sprintf("%5H", q));
sprintf: Length of string to %5H too large: 900:900. HilfeInput:1: HilfeInput()->___HilfeWrapper()