View | Details | Raw Unified | Return to bug 44402
Collapse All | Expand All

(-)orghttpd-2.2.8/server/mpm/worker/fdqueue.c (-3 / +7 lines)
Lines 94-103 Link Here
94
                                                         sizeof(*new_recycle));
94
                                                         sizeof(*new_recycle));
95
        new_recycle->pool = pool_to_recycle;
95
        new_recycle->pool = pool_to_recycle;
96
        for (;;) {
96
        for (;;) {
97
            new_recycle->next = queue_info->recycled_pools;
97
            /* Save the queue_info->recycled_pool->next in local variable next
98
             * because new_recycle->next can be changed after call of
99
             * apr_atomic_casptr.
100
             */
101
            struct recycled_pool *next = queue_info->recycled_pools;
102
            new_recycle->next = next;
98
            if (apr_atomic_casptr((volatile void**)&(queue_info->recycled_pools),
103
            if (apr_atomic_casptr((volatile void**)&(queue_info->recycled_pools),
99
                                  new_recycle, new_recycle->next) ==
104
                                  new_recycle, new_recycle->next) == next) {
100
                new_recycle->next) {
101
                break;
105
                break;
102
            }
106
            }
103
        }
107
        }

Return to bug 44402