diff --git a/windows/input.c b/windows/input.c
index 6a2a7796d0bb3e9f78391f497985863428aa21ae..0fce564851e34cdcf679c325da28736a96379fbe 100644
--- a/windows/input.c
+++ b/windows/input.c
@@ -687,25 +687,28 @@ static BOOL KBD_translate_accelerator(HWND hWnd,LPMSG msg,
 INT WINAPI TranslateAccelerator(HWND hWnd, HACCEL hAccel, LPMSG msg)
 {
     /* YES, Accel16! */
-    LPACCEL16	lpAccelTbl = (LPACCEL16)LockResource16(hAccel);
+    LPACCEL16	lpAccelTbl;
     int 	i;
 
-    TRACE_(accel)("hwnd=0x%x hacc=0x%x msg=0x%x wp=0x%x lp=0x%lx\n", hWnd, hAccel, msg->message, msg->wParam, msg->lParam);
-    
-    if (hAccel == 0 || msg == NULL ||
-	(msg->message != WM_KEYDOWN &&
+    if (msg == NULL)
+       {
+          WARN_(accel)("msg null; should hang here to be win compatible\n");
+          return 0;
+       }
+    if (!hAccel || !(lpAccelTbl = (LPACCEL16) LockResource16(hAccel)))
+       {
+          WARN_(accel)("invalid accel handle=%x\n", hAccel);
+          return 0;
+       }
+    if ((msg->message != WM_KEYDOWN &&
 	 msg->message != WM_KEYUP &&
 	 msg->message != WM_SYSKEYDOWN &&
 	 msg->message != WM_SYSKEYUP &&
-	 msg->message != WM_CHAR)) {
-      WARN_(accel)("erraneous input parameters\n");
-      SetLastError(ERROR_INVALID_PARAMETER);
-      return 0;
-    }
+	 msg->message != WM_CHAR)) return 0;
 
     TRACE_(accel)("TranslateAccelerators hAccel=%04x, hWnd=%04x,"
-	  "msg->hwnd=%04x, msg->message=%04x\n",
-	  hAccel,hWnd,msg->hwnd,msg->message);
+	  "msg->hwnd=%04x, msg->message=%04x, wParam=%08x, lParam=%lx\n",
+	  hAccel,hWnd,msg->hwnd,msg->message,msg->wParam,msg->lParam);
 
     i = 0;
     do
@@ -723,25 +726,30 @@ INT WINAPI TranslateAccelerator(HWND hWnd, HACCEL hAccel, LPMSG msg)
  */	
 INT16 WINAPI TranslateAccelerator16(HWND16 hWnd, HACCEL16 hAccel, LPMSG16 msg)
 {
-    LPACCEL16	lpAccelTbl = (LPACCEL16)LockResource16(hAccel);
+    LPACCEL16	lpAccelTbl;
     int 	i;
     MSG	msg32;
     
-    if (hAccel == 0 || msg == NULL ||
-	(msg->message != WM_KEYDOWN &&
+    if (msg == NULL)
+       {
+          WARN_(accel)("msg null; should hang here to be win compatible\n");
+          return 0;
+       }
+    if (!hAccel || !(lpAccelTbl = (LPACCEL16) LockResource16(hAccel)))
+       {
+          WARN_(accel)("invalid accel handle=%x\n", hAccel);
+          return 0;
+       }
+    if ((msg->message != WM_KEYDOWN &&
 	 msg->message != WM_KEYUP &&
 	 msg->message != WM_SYSKEYDOWN &&
 	 msg->message != WM_SYSKEYUP &&
-	 msg->message != WM_CHAR)) {
-      WARN_(accel)("erraneous input parameters\n");
-      SetLastError(ERROR_INVALID_PARAMETER);
-      return 0;
-    }
+	 msg->message != WM_CHAR)) return 0;
 
     TRACE_(accel)("TranslateAccelerators hAccel=%04x, hWnd=%04x,\
-msg->hwnd=%04x, msg->message=%04x\n", hAccel,hWnd,msg->hwnd,msg->message);
-    STRUCT32_MSG16to32(msg,&msg32);
+msg->hwnd=%04x, msg->message=%04x, wParam=%04x, lParam=%lx\n", hAccel,hWnd,msg->hwnd,msg->message,msg->wParam,msg->lParam);
 
+    STRUCT32_MSG16to32(msg,&msg32);
 
     i = 0;
     do