X-Git-Url: https://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=doc%2Fexamples%2Fwfstack%2Fcds_wfs_pop_all_blocking.c;h=766f07f1eb09226b1452dd9fc73d65f5f97a601a;hp=52bf0c08106c7861989e2de92ef8c52ccc12c33e;hb=bb641aa3882c0a345c98a75d4784b3b7ee6211ab;hpb=53a7719131ff381866fd414cdeff4ac3dd354927 diff --git a/doc/examples/wfstack/cds_wfs_pop_all_blocking.c b/doc/examples/wfstack/cds_wfs_pop_all_blocking.c index 52bf0c0..766f07f 100644 --- a/doc/examples/wfstack/cds_wfs_pop_all_blocking.c +++ b/doc/examples/wfstack/cds_wfs_pop_all_blocking.c @@ -33,7 +33,7 @@ int main(int argc, char **argv) struct cds_wfs_stack mystack; /* Stack */ unsigned int i; int ret = 0; - struct cds_wfs_node *snode; + struct cds_wfs_node *snode, *sn; struct cds_wfs_head *shead; cds_wfs_init(&mystack); @@ -63,13 +63,15 @@ int main(int argc, char **argv) /* * Show the stack content, iterate in reverse order of push, - * from newest to oldest. + * from newest to oldest. Use cds_wfs_for_each_blocking_safe() + * so we can free the nodes as we iterate. */ printf("mystack content:"); - cds_wfs_for_each_blocking(shead, snode) { + cds_wfs_for_each_blocking_safe(shead, snode, sn) { struct mynode *node = caa_container_of(snode, struct mynode, node); printf(" %d", node->value); + free(node); } printf("\n"); end: