It's not a breakpoint, it's a return value. The original function:
int
init_mem(void)
{
if (n_tokens <= 0)
return false;
if ((scratch = (token_type *) malloc(((n_tokens * 3) / 2) * sizeof(token_type))) == NULL
|| (tes = (token_type *) malloc(n_tokens * sizeof(token_type))) == NULL
|| (tlhs = (token_type *) malloc(n_tokens * sizeof(token_type))) == NULL
|| (trhs = (token_type *) malloc(n_tokens * sizeof(token_type))) == NULL) {
return false;
}
if (alloc_next_espace() < 0) { /* make sure there is at least 1 equation space */
return false;
}
clear_all();
return true;
}
I edited the return values to be 1, (((n_tokens * 3 )/ 2 ) * sizeof(token_type)), 3, and 0, respectively, and edited the function that init_mem(); returned to so it would print the return values, and continue without error if the value was 0. Therefore I could track where the fail was coming from.
I don't think the "breakpoint" was intentional: it was in the code to begin with. Maybe I'm misunderstanding you.