core: error: fix double free of errors released with b_error_release
This commit is contained in:
20
core/error.c
20
core/error.c
@@ -459,24 +459,8 @@ enum b_status z__b_error_add_submsg_template(
|
||||
|
||||
void b_error_release(struct b_error *error)
|
||||
{
|
||||
struct b_queue_entry *entry = b_queue_pop_back(&error->err_submsg);
|
||||
while (entry) {
|
||||
struct b_error_submsg *msg
|
||||
= b_unbox(struct b_error_submsg, entry, msg_entry);
|
||||
|
||||
if (msg->msg_content) {
|
||||
free(msg->msg_content);
|
||||
}
|
||||
|
||||
free(msg);
|
||||
entry = b_queue_pop_back(&error->err_submsg);
|
||||
}
|
||||
|
||||
if (error->err_description) {
|
||||
free(error->err_description);
|
||||
}
|
||||
|
||||
free(error);
|
||||
b_queue_delete(&allocated_errors, &error->err_entry);
|
||||
b_queue_push_back(&free_errors, &error->err_entry);
|
||||
}
|
||||
|
||||
void z__b_error_throw(
|
||||
|
||||
Reference in New Issue
Block a user