Fixed GlobalSize return value for zero size block.

diff --git a/memory/global.c b/memory/global.c
index b7ceebf..c6a9f6a 100644
--- a/memory/global.c
+++ b/memory/global.c
@@ -1370,6 +1370,8 @@
       
       if(pintern->Magic==MAGIC_GLOBAL_USED)
       {
+        if (!pintern->Pointer) /* handle case of GlobalAlloc( ??,0) */
+            return 0;
 	 retval=HeapSize(GetProcessHeap(), 0, 
 	                 (char *)(pintern->Pointer)-sizeof(HGLOBAL32))-4;
       }
@@ -1380,6 +1382,8 @@
       }
       /* HeapUnlock(GetProcessHeap()); */
    }
+   /* HeapSize returns 0xffffffff on failure */
+   if (retval == 0xffffffff) retval = 0;
    return retval;
 }
 
diff --git a/memory/heap.c b/memory/heap.c
index 2e3f580..2264fef 100644
--- a/memory/heap.c
+++ b/memory/heap.c
@@ -1204,7 +1204,7 @@
  *           HeapSize   (KERNEL32.341)
  * RETURNS
  *	Size in bytes of allocated memory
- *	0: Failure
+ *	0xffffffff: Failure
  */
 DWORD WINAPI HeapSize(
              HANDLE32 heap, /* [in] Handle of heap */