summaryrefslogtreecommitdiff
path: root/libavutil
diff options
context:
space:
mode:
Diffstat (limited to 'libavutil')
-rw-r--r--libavutil/buffer.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/libavutil/buffer.c b/libavutil/buffer.c
index d268a7f604..3475e57b4a 100644
--- a/libavutil/buffer.c
+++ b/libavutil/buffer.c
@@ -239,14 +239,14 @@ void av_buffer_pool_uninit(AVBufferPool **ppool)
/* remove the whole buffer list from the pool and return it */
static BufferPoolEntry *get_pool(AVBufferPool *pool)
{
- BufferPoolEntry *cur = NULL, *last = NULL;
+ BufferPoolEntry *cur = *(void * volatile *)&pool->pool, *last = NULL;
- do {
+ while (cur != last) {
FFSWAP(BufferPoolEntry*, cur, last);
cur = avpriv_atomic_ptr_cas((void * volatile *)&pool->pool, last, NULL);
if (!cur)
return NULL;
- } while (cur != last);
+ }
return cur;
}