doc/examples: update cds_wfs_pop_all_blocking
[urcu.git] / doc / examples / wfstack / cds_wfs_pop_all_blocking.c
index 52bf0c08106c7861989e2de92ef8c52ccc12c33e..766f07f1eb09226b1452dd9fc73d65f5f97a601a 100644 (file)
@@ -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_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);
        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,
 
        /*
         * 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:");
         */
        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);
                struct mynode *node =
                        caa_container_of(snode, struct mynode, node);
                printf(" %d", node->value);
+               free(node);
        }
        printf("\n");
 end:
        }
        printf("\n");
 end:
This page took 0.022488 seconds and 4 git commands to generate.