diff --git a/listings/listing_7.3.cpp b/listings/listing_7.3.cpp index 29a85de..228e2e3 100644 --- a/listings/listing_7.3.cpp +++ b/listings/listing_7.3.cpp @@ -23,9 +23,9 @@ class lock_free_stack } std::shared_ptr pop() { - node* old_head=head.load(); - while(old_head && - !head.compare_exchange_weak(old_head,old_head->next)); - return old_head ? old_head->data : std::shared_ptr(); + if (!head_) { return std::shared_ptr(); } + node* original_head=head.load(); + while(!head.compare_exchange_weak(original_head,original_head->next)); + return original_head->data; } };