diff --git a/src/lib/core/diag.h b/src/lib/core/diag.h index 3a817a659..276bf2362 100644 --- a/src/lib/core/diag.h +++ b/src/lib/core/diag.h @@ -117,12 +117,11 @@ error_unref(struct error *e) while (--to_delete->refs == 0) { /* Unlink error from lists completely.*/ struct error *cause = to_delete->cause; - if (to_delete->effect != NULL) - to_delete->effect->cause = to_delete->cause; - if (to_delete->cause != NULL) - to_delete->cause->effect = to_delete->effect; - to_delete->cause = NULL; - to_delete->effect = NULL; + assert(to_delete->effect == NULL); + if (to_delete->cause != NULL) { + to_delete->cause->effect = NULL; + to_delete->cause = NULL; + } to_delete->destroy(to_delete); if (cause == NULL) return;