Alexandre Julliard : user32: Move Get/ SetWindowLong16 implementation to wnd16.c.

Alexandre Julliard julliard at winehq.org
Mon Dec 14 09:51:10 CST 2009


Module: wine
Branch: master
Commit: 9727750c796538eb88726ad77d61381428de02e4
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=9727750c796538eb88726ad77d61381428de02e4

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Sun Dec 13 15:30:35 2009 +0100

user32: Move Get/SetWindowLong16 implementation to wnd16.c.

---

 dlls/user32/win.c   |   82 ---------------------------------------------------
 dlls/user32/wnd16.c |   79 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 79 insertions(+), 82 deletions(-)

diff --git a/dlls/user32/win.c b/dlls/user32/win.c
index 46c2388..bb19a4e 100644
--- a/dlls/user32/win.c
+++ b/dlls/user32/win.c
@@ -2307,55 +2307,6 @@ LONG_PTR WIN_SetWindowLong( HWND hwnd, INT offset, UINT size, LONG_PTR newval, B
 
 
 /**********************************************************************
- *		GetWindowLong (USER.135)
- */
-LONG WINAPI GetWindowLong16( HWND16 hwnd, INT16 offset )
-{
-    WND *wndPtr;
-    LONG_PTR retvalue;
-    BOOL is_winproc = (offset == GWLP_WNDPROC);
-
-    if (offset >= 0)
-    {
-        if (!(wndPtr = WIN_GetPtr( WIN_Handle32(hwnd) )))
-        {
-            SetLastError( ERROR_INVALID_WINDOW_HANDLE );
-            return 0;
-        }
-        if (wndPtr != WND_OTHER_PROCESS && wndPtr != WND_DESKTOP)
-        {
-            if (offset > (int)(wndPtr->cbWndExtra - sizeof(LONG)))
-            {
-                /*
-                 * Some programs try to access last element from 16 bit
-                 * code using illegal offset value. Hopefully this is
-                 * what those programs really expect.
-                 */
-                if (wndPtr->cbWndExtra >= 4 && offset == wndPtr->cbWndExtra - sizeof(WORD))
-                {
-                    INT offset2 = wndPtr->cbWndExtra - sizeof(LONG);
-                    ERR( "- replaced invalid offset %d with %d\n", offset, offset2 );
-                    offset = offset2;
-                }
-                else
-                {
-                    WARN("Invalid offset %d\n", offset );
-                    WIN_ReleasePtr( wndPtr );
-                    SetLastError( ERROR_INVALID_INDEX );
-                    return 0;
-                }
-            }
-            is_winproc = ((offset == DWLP_DLGPROC) && (wndPtr->flags & WIN_ISDIALOG));
-            WIN_ReleasePtr( wndPtr );
-        }
-    }
-    retvalue = GetWindowLongA( WIN_Handle32(hwnd), offset );
-    if (is_winproc) retvalue = (LONG_PTR)WINPROC_GetProc16( (WNDPROC)retvalue, FALSE );
-    return retvalue;
-}
-
-
-/**********************************************************************
  *		GetWindowWord (USER32.@)
  */
 WORD WINAPI GetWindowWord( HWND hwnd, INT offset )
@@ -2398,39 +2349,6 @@ LONG WINAPI GetWindowLongW( HWND hwnd, INT offset )
 
 
 /**********************************************************************
- *		SetWindowLong (USER.136)
- */
-LONG WINAPI SetWindowLong16( HWND16 hwnd, INT16 offset, LONG newval )
-{
-    WND *wndPtr;
-    BOOL is_winproc = (offset == GWLP_WNDPROC);
-
-    if (offset == DWLP_DLGPROC)
-    {
-        if (!(wndPtr = WIN_GetPtr( WIN_Handle32(hwnd) )))
-        {
-            SetLastError( ERROR_INVALID_WINDOW_HANDLE );
-            return 0;
-        }
-        if (wndPtr != WND_OTHER_PROCESS && wndPtr != WND_DESKTOP)
-        {
-            is_winproc = ((wndPtr->cbWndExtra - sizeof(LONG_PTR) >= DWLP_DLGPROC) &&
-                          (wndPtr->flags & WIN_ISDIALOG));
-            WIN_ReleasePtr( wndPtr );
-        }
-    }
-
-    if (is_winproc)
-    {
-        WNDPROC new_proc = WINPROC_AllocProc16( (WNDPROC16)newval );
-        WNDPROC old_proc = (WNDPROC)SetWindowLongPtrA( WIN_Handle32(hwnd), offset, (LONG_PTR)new_proc );
-        return (LONG)WINPROC_GetProc16( old_proc, FALSE );
-    }
-    else return SetWindowLongA( WIN_Handle32(hwnd), offset, newval );
-}
-
-
-/**********************************************************************
  *		SetWindowWord (USER32.@)
  */
 WORD WINAPI SetWindowWord( HWND hwnd, INT offset, WORD newval )
diff --git a/dlls/user32/wnd16.c b/dlls/user32/wnd16.c
index 1f7b0b0..f3f7e67 100644
--- a/dlls/user32/wnd16.c
+++ b/dlls/user32/wnd16.c
@@ -719,6 +719,85 @@ WORD WINAPI SetWindowWord16( HWND16 hwnd, INT16 offset, WORD newval )
 }
 
 
+/**********************************************************************
+ *		GetWindowLong (USER.135)
+ */
+LONG WINAPI GetWindowLong16( HWND16 hwnd, INT16 offset )
+{
+    WND *wndPtr;
+    LONG_PTR retvalue;
+    BOOL is_winproc = (offset == GWLP_WNDPROC);
+
+    if (offset >= 0)
+    {
+        if (!(wndPtr = WIN_GetPtr( WIN_Handle32(hwnd) )))
+        {
+            SetLastError( ERROR_INVALID_WINDOW_HANDLE );
+            return 0;
+        }
+        if (wndPtr != WND_OTHER_PROCESS && wndPtr != WND_DESKTOP)
+        {
+            if (offset > (int)(wndPtr->cbWndExtra - sizeof(LONG)))
+            {
+                /*
+                 * Some programs try to access last element from 16 bit
+                 * code using illegal offset value. Hopefully this is
+                 * what those programs really expect.
+                 */
+                if (wndPtr->cbWndExtra >= 4 && offset == wndPtr->cbWndExtra - sizeof(WORD))
+                {
+                    offset = wndPtr->cbWndExtra - sizeof(LONG);
+                }
+                else
+                {
+                    WIN_ReleasePtr( wndPtr );
+                    SetLastError( ERROR_INVALID_INDEX );
+                    return 0;
+                }
+            }
+            is_winproc = ((offset == DWLP_DLGPROC) && (wndPtr->flags & WIN_ISDIALOG));
+            WIN_ReleasePtr( wndPtr );
+        }
+    }
+    retvalue = GetWindowLongA( WIN_Handle32(hwnd), offset );
+    if (is_winproc) retvalue = (LONG_PTR)WINPROC_GetProc16( (WNDPROC)retvalue, FALSE );
+    return retvalue;
+}
+
+
+/**********************************************************************
+ *		SetWindowLong (USER.136)
+ */
+LONG WINAPI SetWindowLong16( HWND16 hwnd, INT16 offset, LONG newval )
+{
+    WND *wndPtr;
+    BOOL is_winproc = (offset == GWLP_WNDPROC);
+
+    if (offset == DWLP_DLGPROC)
+    {
+        if (!(wndPtr = WIN_GetPtr( WIN_Handle32(hwnd) )))
+        {
+            SetLastError( ERROR_INVALID_WINDOW_HANDLE );
+            return 0;
+        }
+        if (wndPtr != WND_OTHER_PROCESS && wndPtr != WND_DESKTOP)
+        {
+            is_winproc = ((wndPtr->cbWndExtra - sizeof(LONG_PTR) >= DWLP_DLGPROC) &&
+                          (wndPtr->flags & WIN_ISDIALOG));
+            WIN_ReleasePtr( wndPtr );
+        }
+    }
+
+    if (is_winproc)
+    {
+        WNDPROC new_proc = WINPROC_AllocProc16( (WNDPROC16)newval );
+        WNDPROC old_proc = (WNDPROC)SetWindowLongPtrA( WIN_Handle32(hwnd), offset, (LONG_PTR)new_proc );
+        return (LONG)WINPROC_GetProc16( old_proc, FALSE );
+    }
+    else return SetWindowLongA( WIN_Handle32(hwnd), offset, newval );
+}
+
+
 /**************************************************************************
  *              OpenClipboard   (USER.137)
  */




More information about the wine-cvs mailing list