diff options
| author | Jon Ashburn <jon@lunarg.com> | 2015-02-12 12:36:37 -0700 |
|---|---|---|
| committer | Jon Ashburn <jon@lunarg.com> | 2015-02-12 16:13:09 -0700 |
| commit | eb876e67f784f6ea6e1837bbf777fb17ce8382fb (patch) | |
| tree | ba3c701d7f48265bbaaed02945b4e6a22c6fa23b | |
| parent | 69201fdcf0c6da64f586af254e2ce818768628f2 (diff) | |
| download | usermoji-eb876e67f784f6ea6e1837bbf777fb17ce8382fb.tar.xz | |
icd: Fix removing callback from global list
Callback wasn't getting actually removed from the list.
| -rw-r--r-- | icd/common/icd-log.c | 10 |
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; } |
