ERR_set_mark() sets a mark on the current topmost error record if there is one.
ERR_pop_to_mark() will pop the top of the error stack until a mark is found. The mark is then removed. If there is no mark, the whole stack is removed.
ERR_set_mark() returns 0 if the error stack is empty, otherwise 1.
ERR_pop_to_mark() returns 0 if there was no mark in the error stack, which implies that the stack became empty, otherwise 1.