diff --git a/src/xpdev/link_list.c b/src/xpdev/link_list.c
index 1fd369f5f31a0941c096c2c5490f59c5b0d9497b..523aa78b543722fc11213df8e97c88496fb0b3cc 100644
--- a/src/xpdev/link_list.c
+++ b/src/xpdev/link_list.c
@@ -146,8 +146,10 @@ long listDettach(link_list_t* list)
 		return(-1);
 
 	listLock(list);
-	if((refs=--list->refs)==0)
+	if((refs=--list->refs)==0) {
+		listUnlock(list);
 		listFree(list);
+	}
 	else
 		listUnlock(list);