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)
|
void b_error_release(struct b_error *error)
|
||||||
{
|
{
|
||||||
struct b_queue_entry *entry = b_queue_pop_back(&error->err_submsg);
|
b_queue_delete(&allocated_errors, &error->err_entry);
|
||||||
while (entry) {
|
b_queue_push_back(&free_errors, &error->err_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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void z__b_error_throw(
|
void z__b_error_throw(
|
||||||
|
|||||||
Reference in New Issue
Block a user