Closed Prof9 closed 7 years ago
This is actually caused by numbers being stored and interpreted as unsigned in expressions, so count < 0 never returns true. Stems back from the time where all the expression evaluation was still using 32 bit types, which would lead to very... unintuitive results with addresses where bit 31 is set (like for PSX). As everything is using 64 bit math by now, it might be time to change them to be signed.
Seems to be fixed in 89ac362.
This macro call should print three test lines; on the first call
count < 0
, so it's called again with count initialized to 3 (this would be replaced by an 'expensive' operation such as readu32()); then, it's called three times with index incrementing up to 3. However, the macro goes into max recursion instead and produces the following output: