[libxml2] Windows Critical sections not released correctly
- From: Daniel Veillard <veillard src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libxml2] Windows Critical sections not released correctly
- Date: Mon, 13 Oct 2014 07:05:47 +0000 (UTC)
commit 8854e4631844eac8dbae10cc32904f27d5268af7
Author: Daniel Veillard <veillard redhat com>
Date: Mon Oct 13 15:03:58 2014 +0800
Windows Critical sections not released correctly
For https://bugzilla.gnome.org/show_bug.cgi?id=737851
Based on report from mike vanduzee caris com , we were missing calling
LeaveCriticalSection() when count was down to 0 hence not freeing
adequately the related resource.
threads.c | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)
---
diff --git a/threads.c b/threads.c
index f2f2703..8921204 100644
--- a/threads.c
+++ b/threads.c
@@ -378,7 +378,7 @@ xmlRMutexLock(xmlRMutexPtr tok)
pthread_mutex_unlock(&tok->lock);
#elif defined HAVE_WIN32_THREADS
EnterCriticalSection(&tok->cs);
- ++tok->count;
+ tok->count++;
#elif defined HAVE_BEOS_THREADS
if (tok->lock->tid == find_thread(NULL)) {
tok->count++;
@@ -414,8 +414,10 @@ xmlRMutexUnlock(xmlRMutexPtr tok ATTRIBUTE_UNUSED)
}
pthread_mutex_unlock(&tok->lock);
#elif defined HAVE_WIN32_THREADS
- if (!--tok->count)
+ if (tok->count > 0) {
LeaveCriticalSection(&tok->cs);
+ tok->count--;
+ }
#elif defined HAVE_BEOS_THREADS
if (tok->lock->tid == find_thread(NULL)) {
tok->count--;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]