Remove LOCAL_*() from USER

Dimitrie O. Paun dpaun at rogers.com
Wed May 18 16:26:05 CDT 2005


ChangeLog
    Remove LOCAL_*() from USER.


Index: dlls/user/user_private.h
===================================================================
RCS file: /var/cvs/wine/dlls/user/user_private.h,v
retrieving revision 1.12
diff -u -p -r1.12 user_private.h
--- dlls/user/user_private.h	11 May 2005 13:03:15 -0000	1.12
+++ dlls/user/user_private.h	18 May 2005 21:21:28 -0000
@@ -28,10 +28,47 @@
 #include "winuser.h"
 #include "winreg.h"
 #include "winternl.h"
-#include "local.h"
+#include "wine/windef16.h"
+#include "wine/winbase16.h"
 
 extern WORD USER_HeapSel;
 
+static inline HLOCAL16 LOCAL_Alloc( HANDLE16 ds, UINT16 flags, WORD size )
+{
+    STACK16FRAME* stack16 = MapSL((SEGPTR)NtCurrentTeb()->WOW32Reserved);
+    HANDLE16 oldDS = stack16->ds;
+    HLOCAL16 ret;
+
+    stack16->ds = ds;
+    ret = LocalAlloc16 (flags, size);
+    stack16->ds = oldDS;
+    return ret;
+}
+
+static inline  HLOCAL16 LOCAL_ReAlloc( HANDLE16 ds, HLOCAL16 handle, WORD size, UINT16 flags )
+{
+    STACK16FRAME* stack16 = MapSL((SEGPTR)NtCurrentTeb()->WOW32Reserved);
+    HANDLE16 oldDS = stack16->ds;
+    HLOCAL16 ret;
+
+    stack16->ds = ds;
+    ret = LocalReAlloc16 (handle, size, flags);
+    stack16->ds = oldDS;
+    return ret;
+}
+
+static inline HLOCAL16 LOCAL_Free( HANDLE16 ds, HLOCAL16 handle )
+{
+    STACK16FRAME* stack16 = MapSL((SEGPTR)NtCurrentTeb()->WOW32Reserved);
+    HANDLE16 oldDS = stack16->ds;
+    HLOCAL16 ret;
+
+    stack16->ds = ds;
+    ret = LocalFree16 (handle);
+    stack16->ds = oldDS;
+    return ret;
+}
+
 #define USER_HEAP_ALLOC(size) \
             ((HANDLE)(ULONG_PTR)LOCAL_Alloc( USER_HeapSel, LMEM_FIXED, (size) ))
 #define USER_HEAP_REALLOC(handle,size) \
Index: windows/syscolor.c
===================================================================
RCS file: /var/cvs/wine/windows/syscolor.c,v
retrieving revision 1.47
diff -u -p -r1.47 syscolor.c
--- windows/syscolor.c	18 Apr 2005 15:37:32 -0000	1.47
+++ windows/syscolor.c	18 May 2005 21:17:43 -0000
@@ -32,7 +32,7 @@
 #include "winuser.h"
 #include "wownt32.h"
 #include "winreg.h"
-#include "local.h"
+#include "winternl.h"
 #include "gdi.h" /* sic */
 #include "wine/debug.h"
 
@@ -105,14 +105,19 @@ static void SYSCOLOR_MakeObjectSystem( H
     if (!heap_sel) heap_sel = LoadLibrary16( "gdi" );
     if (heap_sel >= 32)
     {
-        ptr = (LPWORD)LOCAL_Lock(heap_sel, handle);
+        STACK16FRAME* stack16 = MapSL((SEGPTR)NtCurrentTeb()->WOW32Reserved);
+        HANDLE16 oldDS = stack16->ds;
+
+        stack16->ds = heap_sel;
+        ptr = MapSL(LocalLock16(handle));
 
         /* touch the "system" bit of the wMagic field of a GDIOBJHDR */
         if (set)
             *ptr &= ~OBJECT_NOSYSTEM;
         else
             *ptr |= OBJECT_NOSYSTEM;
-        LOCAL_Unlock( heap_sel, handle );
+        LocalUnlock16( handle );
+        stack16->ds = oldDS;
     }
 }
 
Index: windows/user.c
===================================================================
RCS file: /var/cvs/wine/windows/user.c,v
retrieving revision 1.112
diff -u -p -r1.112 user.c
--- windows/user.c	14 May 2005 12:18:15 -0000	1.112
+++ windows/user.c	18 May 2005 21:10:47 -0000
@@ -35,7 +35,6 @@
 #include "win.h"
 #include "controls.h"
 #include "cursoricon.h"
-#include "local.h"
 #include "wine/debug.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(user);
@@ -73,6 +72,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(user);
  */
 WORD WINAPI GetFreeSystemResources16( WORD resType )
 {
+    STACK16FRAME* stack16 = MapSL((SEGPTR)NtCurrentTeb()->WOW32Reserved);
+    HANDLE16 oldDS = stack16->ds;
     HINSTANCE16 gdi_inst;
     WORD gdi_heap;
     int userPercent, gdiPercent;
@@ -83,22 +84,25 @@ WORD WINAPI GetFreeSystemResources16( WO
     switch(resType)
     {
     case GFSR_USERRESOURCES:
-        userPercent = (int)LOCAL_CountFree( USER_HeapSel ) * 100 /
-                               LOCAL_HeapSize( USER_HeapSel );
+        stack16->ds = USER_HeapSel;
+        userPercent = (int)LocalCountFree16() * 100 / LocalHeapSize16();
         gdiPercent  = 100;
+        stack16->ds = oldDS;
         break;
 
     case GFSR_GDIRESOURCES:
-        gdiPercent  = (int)LOCAL_CountFree( gdi_inst ) * 100 /
-                               LOCAL_HeapSize( gdi_inst );
+        stack16->ds = gdi_inst;
+        gdiPercent  = (int)LocalCountFree16() * 100 / LocalHeapSize16();
         userPercent = 100;
+        stack16->ds = oldDS;
         break;
 
     case GFSR_SYSTEMRESOURCES:
-        userPercent = (int)LOCAL_CountFree( USER_HeapSel ) * 100 /
-                               LOCAL_HeapSize( USER_HeapSel );
-        gdiPercent  = (int)LOCAL_CountFree( gdi_inst ) * 100 /
-                               LOCAL_HeapSize( gdi_inst );
+        stack16->ds = USER_HeapSel;
+        userPercent = (int)LocalCountFree16() * 100 / LocalHeapSize16();
+        stack16->ds = gdi_inst;
+        gdiPercent  = (int)LocalCountFree16() * 100 / LocalHeapSize16();
+        stack16->ds = oldDS;
         break;
 
     default:
@@ -546,23 +550,33 @@ BOOL WINAPI EnumDisplayDevicesW(
  */
 DWORD WINAPI UserSeeUserDo16(WORD wReqType, WORD wParam1, WORD wParam2, WORD wParam3)
 {
+    STACK16FRAME* stack16 = MapSL((SEGPTR)NtCurrentTeb()->WOW32Reserved);
+    HANDLE16 oldDS = stack16->ds;
+    DWORD ret = (DWORD)-1;
+
+    stack16->ds = USER_HeapSel;
     switch (wReqType)
     {
     case USUD_LOCALALLOC:
-        return LOCAL_Alloc(USER_HeapSel, wParam1, wParam3);
+        ret = LocalAlloc16(wParam1, wParam3);
+	break;
     case USUD_LOCALFREE:
-        return LOCAL_Free(USER_HeapSel, wParam1);
+        ret = LocalFree16(wParam1);
+	break;
     case USUD_LOCALCOMPACT:
-        return LOCAL_Compact(USER_HeapSel, wParam3);
+        ret = LocalCompact16(wParam3);
+	break;
     case USUD_LOCALHEAP:
-        return USER_HeapSel;
+        ret = USER_HeapSel;
+	break;
     case USUD_FIRSTCLASS:
         FIXME("return a pointer to the first window class.\n");
-        return (DWORD)-1;
+	break;
     default:
         WARN("wReqType %04x (unknown)\n", wReqType);
-        return (DWORD)-1;
     }
+    stack16->ds = oldDS;
+    return ret;
 }
 
 /***********************************************************************

-- 
Dimi.



More information about the wine-patches mailing list