Module: Mesa Branch: master Commit: 0c36aac83252d32dac8c4da2850539bff0b10301 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0c36aac83252d32dac8c4da2850539bff0b10301
Author: Jason Ekstrand <[email protected]> Date: Wed Nov 5 13:57:09 2014 -0800 glsl/list: Add an exec_list_validate function This can be very useful for trying to debug list corruptions. Signed-off-by: Jason Ekstrand <[email protected]> Reviewed-by: Matt Turner <[email protected]> --- src/glsl/list.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/glsl/list.h b/src/glsl/list.h index b6c32bc..e4b063c 100644 --- a/src/glsl/list.h +++ b/src/glsl/list.h @@ -521,6 +521,25 @@ exec_node_insert_list_before(struct exec_node *n, struct exec_list *before) exec_list_make_empty(before); } +static inline void +exec_list_validate(const struct exec_list *list) +{ + assert(list->head->prev == (const struct exec_node *) &list->head); + assert(list->tail == NULL); + assert(list->tail_pred->next == (const struct exec_node *) &list->tail); + + /* We could try to use one of the interators below for this but they all + * either require C++ or assume the exec_node is embedded in a structure + * which is not the case for this function. + */ + for (const struct exec_node *node = exec_list_get_head_const(list); + !exec_node_is_tail_sentinel(node); + node = exec_node_get_next_const(node)) { + assert(node->next->prev == node); + assert(node->prev->next == node); + } +} + #ifdef __cplusplus inline void exec_list::make_empty() { _______________________________________________ mesa-commit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-commit
