Module: wine Branch: refs/heads/master Commit: cb7aa0306e0b7f6aa35090df7a8d08597b74c6e3 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=cb7aa0306e0b7f6aa35090df...
Author: Robert Shearman rob@codeweavers.com Date: Tue Jan 10 19:59:15 2006 +0100
kernel32: Return an error when unlocking a global with a zero lock count. Rename GLOBAL_LOCK_MAX to the public GMEM_LOCKCOUNT.
---
dlls/kernel/heap.c | 20 +++++++++++++------- 1 files changed, 13 insertions(+), 7 deletions(-)
diff --git a/dlls/kernel/heap.c b/dlls/kernel/heap.c index ac3b6b2..6c0b913 100644 --- a/dlls/kernel/heap.c +++ b/dlls/kernel/heap.c @@ -299,7 +299,6 @@ SIZE_T WINAPI HeapSize( HANDLE heap, DWO */
#define MAGIC_GLOBAL_USED 0x5342 -#define GLOBAL_LOCK_MAX 0xFF #define HANDLE_TO_INTERN(h) ((PGLOBAL32_INTERN)(((char *)(h))-2)) #define INTERN_TO_HANDLE(i) ((HGLOBAL) &((i)->Pointer)) #define POINTER_TO_HANDLE(p) (*(((HGLOBAL *)(p))-2)) @@ -416,8 +415,8 @@ LPVOID WINAPI GlobalLock( palloc = pintern->Pointer; if (!pintern->Pointer) SetLastError(ERROR_DISCARDED); - else if (pintern->LockCount < GLOBAL_LOCK_MAX) - pintern->LockCount++; + else if (pintern->LockCount < GMEM_LOCKCOUNT) + pintern->LockCount++; } else { @@ -461,11 +460,18 @@ BOOL WINAPI GlobalUnlock( pintern=HANDLE_TO_INTERN(hmem); if(pintern->Magic==MAGIC_GLOBAL_USED) { - if((pintern->LockCount<GLOBAL_LOCK_MAX)&&(pintern->LockCount>0)) + if(pintern->LockCount) + { pintern->LockCount--; - - locked = (pintern->LockCount != 0); - if (!locked) SetLastError(NO_ERROR); + locked = (pintern->LockCount != 0); + if (!locked) SetLastError(NO_ERROR); + } + else + { + WARN("%p not locked\n", hmem); + SetLastError(ERROR_NOT_LOCKED); + locked = FALSE; + } } else {