I have stumbled upon a persistent problem, that doesn't seem to have a rational explanation. The problem seems to lie inside a for loop that goes for (i = size - 1; i >= 0; i--) {etc.}
where size
is the size of a file stored in a memory buffer and i
is an unsigned integer. Instead of stopping when i == 0
, it wraps around - thus resulting in i = 4294967295
and causing a segmentation fault. Changing the conditional to i > 0
solves the problem.
However, isn't this kind of peculiar? I must be missing some crucial part of how the for loop operates in C. Doesn't it follow this scheme: initialize, check conditional, increment/decrement, check conditional and so on?
Any help is appreciated!