aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--icd/common/icd-log.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/icd/common/icd-log.c b/icd/common/icd-log.c
index f900b19d..3b930511 100644
--- a/icd/common/icd-log.c
+++ b/icd/common/icd-log.c
@@ -89,7 +89,7 @@ XGL_RESULT icd_logger_add_callback(XGL_DBG_MSG_CALLBACK_FUNCTION func,
XGL_RESULT icd_logger_remove_callback(XGL_DBG_MSG_CALLBACK_FUNCTION func)
{
- struct icd_logger_callback *cb = icd_logger.callbacks;
+ struct icd_logger_callback *cb = icd_logger.callbacks, *prev = NULL;
bool found = false;
/* remove all matches */
@@ -97,10 +97,16 @@ XGL_RESULT icd_logger_remove_callback(XGL_DBG_MSG_CALLBACK_FUNCTION func)
struct icd_logger_callback *next = cb->next;
if (cb->func == func) {
+ if (prev == NULL)
+ icd_logger.callbacks = next;
+ else
+ prev->next = next;
free(cb);
found = true;
}
-
+ else {
+ prev = cb;
+ }
cb = next;
}