In several cases we call delete_element(x) after x has been set to NULL or after an unsuccessful clone_element(y, &x) call. clone_element always gives a NULL element pointer when it fails. delete_element(NULL) will dereference the NULL and crash. These lines will never be reached with a non-NULL element. Vincent Povirk