# HG changeset patch # User Matti Hamalainen # Date 1560722222 -10800 # Node ID f92d4f05658703ff9aedd71b84543a62edd62e85 # Parent e286454d305fb63dfc7b085c7e15ebe4754021a0 The return value of dmResourceRef() and dmResourceUnref() had a possibility of being off by one due to a potential race condition. Fixed. diff -r e286454d305f -r f92d4f056587 src/dmres.c --- a/src/dmres.c Mon Jun 17 00:55:07 2019 +0300 +++ b/src/dmres.c Mon Jun 17 00:57:02 2019 +0300 @@ -1014,22 +1014,26 @@ int dmResourceRef(DMResource *node) { + int res; + dmLockLibMutex(node->lib); node->atime = time(NULL); - node->refcount++; + res = ++node->refcount; dmUnlockLibMutex(node->lib); - return node->refcount; + return res; } int dmResourceUnref(DMResource *node) { + int res; + dmLockLibMutex(node->lib); - node->refcount--; + res = --node->refcount; dmUnlockLibMutex(node->lib); - return node->refcount; + return res; }