It's just counting down from the top (comparisons against 0 are cheaper than comparing against CF_MAX_NESTING on a loop that counts up), which is potentially a Right Thing To Do, given that these are stacks (so higher-indexed things were created more recently; it's thus better to destroy them earlier).

The idiom <code> i-- > 0 </code> means: check i is positive, then decrement it.  You'll fall off the end of the loop with i = -1 (but we don't use i after that; it actually drops out of scope); the first pass through the loop has (by the time we enter the loop body) i = CF_MAX_NESTING - 1 and the last has i = 0.