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