X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=doc%2Fexamples%2Fwfstack%2Fcds_wfs_pop_all_blocking.c;h=794ced154008064c7eeb4285ff09225a16afcc06;hb=70469b43316ecc8d6053550504858ad8a8ef9b16;hp=52bf0c08106c7861989e2de92ef8c52ccc12c33e;hpb=53a7719131ff381866fd414cdeff4ac3dd354927;p=urcu.git diff --git a/doc/examples/wfstack/cds_wfs_pop_all_blocking.c b/doc/examples/wfstack/cds_wfs_pop_all_blocking.c index 52bf0c0..794ced1 100644 --- a/doc/examples/wfstack/cds_wfs_pop_all_blocking.c +++ b/doc/examples/wfstack/cds_wfs_pop_all_blocking.c @@ -27,13 +27,13 @@ struct mynode { struct cds_wfs_node node; /* Chaining in stack */ }; -int main(int argc, char **argv) +int main(void) { int values[] = { -5, 42, 36, 24, }; 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,15 +63,18 @@ 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: + cds_wfs_destroy(&mystack); return ret; }