os2: several warning fixes.

mostly those "W007: '&array' may not produce intended result" warnings
from Watcom, visible only in C++ mode.  one or two others here & there.
diff --git a/src/audio/os2/SDL_os2audio.c b/src/audio/os2/SDL_os2audio.c
index 786deb1..9da0add 100644
--- a/src/audio/os2/SDL_os2audio.c
+++ b/src/audio/os2/SDL_os2audio.c
@@ -61,8 +61,8 @@
 {
   CHAR			acBuf[128];
 
-  mciGetErrorString( ulResult, (PCHAR)&acBuf, sizeof(acBuf) );
-  return SDL_SetError( "[%s] %s", pszFunc, &acBuf );
+  mciGetErrorString( ulResult, acBuf, sizeof(acBuf) );
+  return SDL_SetError( "[%s] %s", pszFunc, acBuf );
 }
 
 static void _mixIOError(PSZ pszFunction, ULONG ulRC)
@@ -128,7 +128,7 @@
   ULONG                  ulHandle = 0;
 
   acBuf[0] = '\0';
-  stMCISysInfo.pszReturn    = &acBuf;
+  stMCISysInfo.pszReturn    = acBuf;
   stMCISysInfo.ulRetSize    = sizeof(acBuf);
   stMCISysInfo.usDeviceType = MCI_DEVTYPE_AUDIO_AMPMIX;
   ulRC = mciSendCommand( 0, MCI_SYSINFO, MCI_WAIT | MCI_SYSINFO_QUANTITY,
@@ -145,7 +145,7 @@
        stSysInfoParams.ulNumber++ )
   {
     // Get device install name.
-    stSysInfoParams.pszReturn    = &acBuf;
+    stSysInfoParams.pszReturn    = acBuf;
     stSysInfoParams.ulRetSize    = sizeof( acBuf );
     stSysInfoParams.usDeviceType = MCI_DEVTYPE_AUDIO_AMPMIX;
     ulRC = mciSendCommand( 0, MCI_SYSINFO, MCI_WAIT | MCI_SYSINFO_INSTALLNAME,
@@ -159,7 +159,7 @@
     // Get textual product description.
     stSysInfoParams.ulItem = MCI_SYSINFO_QUERY_DRIVER;
     stSysInfoParams.pSysInfoParm = &stLogDevice;
-    strcpy( &stLogDevice.szInstallName, stSysInfoParams.pszReturn );
+    strcpy( stLogDevice.szInstallName, stSysInfoParams.pszReturn );
     ulRC = mciSendCommand( 0, MCI_SYSINFO, MCI_WAIT | MCI_SYSINFO_ITEM,
                            &stSysInfoParams, 0 );
     if ( ulRC != NO_ERROR )
@@ -169,9 +169,9 @@
     }
 
     ulHandle++;
-    SDL_AddAudioDevice( 0, &stLogDevice.szProductInfo, (void *)(ulHandle) );
+    SDL_AddAudioDevice( 0, stLogDevice.szProductInfo, (void *)(ulHandle) );
     ulHandle++;
-    SDL_AddAudioDevice( 1, &stLogDevice.szProductInfo, (void *)(ulHandle) );
+    SDL_AddAudioDevice( 1, stLogDevice.szProductInfo, (void *)(ulHandle) );
   }
 }
 
@@ -226,11 +226,9 @@
     return;
 
   /* Close up audio */
-
   if ( pAData->usDeviceId != (USHORT)~0 )
   {
     // Device is open.
-
     if ( pAData->stMCIMixSetup.ulBitsPerSample != 0 )
     {
       // Mixer was initialized.
diff --git a/src/core/os2/geniconv/geniconv.c b/src/core/os2/geniconv/geniconv.c
index 8ce7046..a86e3de 100644
--- a/src/core/os2/geniconv/geniconv.c
+++ b/src/core/os2/geniconv/geniconv.c
@@ -47,7 +47,7 @@
   ULONG      ulRC;
   CHAR       acError[256];
 
-  ulRC = DosLoadModule( &acError, sizeof(acError), pszName, &hmIconv );
+  ulRC = DosLoadModule( acError, sizeof(acError), pszName, &hmIconv );
   if ( ulRC != NO_ERROR )
   {
     debug( "DLL not loaded: %s", &acError );
diff --git a/src/core/os2/geniconv/os2cp.c b/src/core/os2/geniconv/os2cp.c
index 2e356a2..dfddf80 100644
--- a/src/core/os2/geniconv/os2cp.c
+++ b/src/core/os2/geniconv/os2cp.c
@@ -288,7 +288,7 @@
     ULONG	aulCP[3];
     ULONG	cCP;
 
-    if ( DosQueryCp( sizeof(aulCP), &aulCP, &cCP ) != NO_ERROR )
+    if ( DosQueryCp( sizeof(aulCP), aulCP, &cCP ) != NO_ERROR )
       return NULL;
 
     cp = aulCP[0];
@@ -336,7 +336,7 @@
     ULONG	aulCP[3];
     ULONG	cCP;
 
-    return DosQueryCp( sizeof(aulCP), &aulCP, &cCP ) != NO_ERROR ? 0 : aulCP[0];
+    return DosQueryCp( sizeof(aulCP), aulCP, &cCP ) != NO_ERROR ? 0 : aulCP[0];
   }
 
   while( isspace( *cp ) ) cp++;
@@ -348,17 +348,17 @@
   if ( ulNext >= sizeof(acBuf) )
     return 0;
   
-  memcpy( &acBuf, cp, ulNext );
+  memcpy( acBuf, cp, ulNext );
   acBuf[ulNext] = '\0';
-  strupr( &acBuf ); 
+  strupr( acBuf ); 
 
-  lCmp = strcmp( aName2CP[0].pszName, &acBuf );
+  lCmp = strcmp( aName2CP[0].pszName, acBuf );
   if ( lCmp > 0 )
     return 0;
   else if ( lCmp == 0 )
     return aName2CP[0].ulCode;
 
-  lCmp = strcmp( aName2CP[ulHi].pszName, &acBuf );
+  lCmp = strcmp( aName2CP[ulHi].pszName, acBuf );
   if ( lCmp < 0 )
     return 0;
   else if ( lCmp == 0 )
@@ -368,7 +368,7 @@
   {
     ulNext = ( ulLo + ulHi ) / 2;
 
-    lCmp = strcmp( aName2CP[ulNext].pszName, &acBuf );
+    lCmp = strcmp( aName2CP[ulNext].pszName, acBuf );
     if ( lCmp < 0 )
       ulLo = ulNext;
     else if ( lCmp > 0 )
diff --git a/src/core/os2/geniconv/os2iconv.c b/src/core/os2/geniconv/os2iconv.c
index 9e54f66..d550bd4 100644
--- a/src/core/os2/geniconv/os2iconv.c
+++ b/src/core/os2/geniconv/os2iconv.c
@@ -49,7 +49,7 @@
     }
   }
 
-  return UniCreateUconvObject( &uc_code, uobj );
+  return UniCreateUconvObject( uc_code, uobj );
 }
 
 static int uconv_open(const char *code, UconvObject *uobj)
@@ -68,8 +68,8 @@
     unsigned long	cp = os2cpFromName( (char *)code );
     char		cp_name[16];
 
-    if ( cp != 0 && _snprintf( &cp_name, sizeof(cp_name), "IBM-%u", cp ) > 0 )
-      rc = _createUconvObj( &cp_name, uobj );
+    if ( cp != 0 && _snprintf( cp_name, sizeof(cp_name), "IBM-%u", cp ) > 0 )
+      rc = _createUconvObj( cp_name, uobj );
   }
 
   return rc;
diff --git a/src/filesystem/os2/SDL_sysfilesystem.c b/src/filesystem/os2/SDL_sysfilesystem.c
index 2420ae2..7fd09c0 100644
--- a/src/filesystem/os2/SDL_sysfilesystem.c
+++ b/src/filesystem/os2/SDL_sysfilesystem.c
@@ -64,7 +64,7 @@
   }
 
   cbResult = pcEnd - pib->pib_pchcmd;
-  SDL_memcpy( &acBuf, pib->pib_pchcmd, cbResult );
+  SDL_memcpy( acBuf, pib->pib_pchcmd, cbResult );
   acBuf[cbResult] = '\0';
 
   return OS2_SysToUTF8( acBuf );
@@ -91,12 +91,12 @@
       return NULL;
   }
 
-  lPosApp = SDL_snprintf( &acBuf, sizeof(acBuf) - 1, "%s\\%s", pszPath, pszOrg );
+  lPosApp = SDL_snprintf( acBuf, sizeof(acBuf) - 1, "%s\\%s", pszPath, pszOrg );
   SDL_free( pszOrg );
   if ( lPosApp == -1 )
     return NULL;
 
-  mkdir( &acBuf );
+  mkdir( acBuf );
 
   pszApp = OS2_UTF8ToSys( app );
   if ( pszApp == NULL )
@@ -110,11 +110,11 @@
   SDL_free( pszApp );
   if ( lPosOrg == -1 )
     return NULL;
-  
-  mkdir( &acBuf );
+
+  mkdir( acBuf );
   *((PUSHORT)&acBuf[lPosApp + lPosOrg]) = (USHORT)'\0\\';
 
-  return OS2_SysToUTF8( &acBuf );
+  return OS2_SysToUTF8( acBuf );
 }
 
 #endif /* SDL_FILESYSTEM_OS2 */
diff --git a/src/loadso/os2/SDL_sysloadso.c b/src/loadso/os2/SDL_sysloadso.c
index 2667712..85987df 100644
--- a/src/loadso/os2/SDL_sysloadso.c
+++ b/src/loadso/os2/SDL_sysloadso.c
@@ -40,10 +40,9 @@
   PSZ        pszModName = OS2_UTF8ToSys( sofile );
   CHAR       acError[256];
 
-  ulRC = DosLoadModule( &acError, sizeof(acError), pszModName, &hModule );
-  SDL_free( pszModName );
-  if ( ulRC != NO_ERROR )
-  {
+  ulRC = DosLoadModule(acError, sizeof(acError), pszModName, &hModule);
+  SDL_free(pszModName);
+  if (ulRC != NO_ERROR) {
     SDL_SetError( "Failed loading %s (E%u)", acError, ulRC );
     return NULL;
   }
@@ -57,9 +56,8 @@
   ULONG      ulRC;
   PFN        pFN;
 
-  ulRC = DosQueryProcAddr( (HMODULE)handle, 0, name, &pFN );
-  if ( ulRC != NO_ERROR )
-  {
+  ulRC = DosQueryProcAddr((HMODULE)handle, 0, name, &pFN);
+  if (ulRC != NO_ERROR) {
     SDL_SetError( "Failed loading procedure %s (E%u)", name, ulRC );
     return NULL;
   }
@@ -70,7 +68,7 @@
 void
 SDL_UnloadObject(void *handle)
 {
-  if ( handle != NULL )
+  if (handle != NULL)
     DosFreeModule( (HMODULE)handle );
 }
 
diff --git a/src/video/os2/SDL_os2dive.c b/src/video/os2/SDL_os2dive.c
index d4f4982..a52f94e 100644
--- a/src/video/os2/SDL_os2dive.c
+++ b/src/video/os2/SDL_os2dive.c
@@ -72,7 +72,7 @@
 
   // Query information about display hardware from DIVE.
 
-  sDiveCaps.pFormatData    = &fccFormats;
+  sDiveCaps.pFormatData    = fccFormats;
   sDiveCaps.ulFormatLength = 100;
   sDiveCaps.ulStructLen    = sizeof(DIVE_CAPS);
 
diff --git a/src/video/os2/SDL_os2messagebox.c b/src/video/os2/SDL_os2messagebox.c
index 9361199..3882a6c 100644
--- a/src/video/os2/SDL_os2messagebox.c
+++ b/src/video/os2/SDL_os2messagebox.c
@@ -68,10 +68,10 @@
 
   while( ( hWndNext = WinGetNextWindow( hEnum ) ) != NULLHANDLE )
   {
-    if ( WinQueryClassName( hWndNext, sizeof(acBuf), &acBuf ) == 0 )
+    if ( WinQueryClassName( hWndNext, sizeof(acBuf), acBuf ) == 0 )
       continue;
 
-    if ( strcmp( &acBuf, "#3" ) == 0 ) // Class name of button.
+    if ( strcmp( acBuf, "#3" ) == 0 ) // Class name of button.
     {
       if ( cButtons < sizeof(aButtons) / sizeof(struct _BUTTON) )
       {
@@ -91,8 +91,8 @@
   for( ulIdx = 0; ulIdx < cButtons; ulIdx++ )
   {
     // Query size of text in window coordinates.
-    cbBuf = WinQueryWindowText( aButtons[ulIdx].hwnd, sizeof(acBuf), &acBuf );
-    GpiQueryTextBox( hps, cbBuf, acBuf, TXTBOX_COUNT, &aptText );
+    cbBuf = WinQueryWindowText( aButtons[ulIdx].hwnd, sizeof(acBuf), acBuf );
+    GpiQueryTextBox( hps, cbBuf, acBuf, TXTBOX_COUNT, aptText );
     aptText[TXTBOX_TOPRIGHT].x -= aptText[TXTBOX_BOTTOMLEFT].x;
     aptText[TXTBOX_TOPRIGHT].y -= aptText[TXTBOX_BOTTOMLEFT].y;
     // Convert text size to dialog coordinates.
@@ -154,7 +154,7 @@
     aptText[1].x = aButtons[ulIdx].ulCX;
     aptText[1].y = ulButtonsCY;
     // Convert to window coordinates.
-    WinMapDlgPoints( hwnd, &aptText, 2, TRUE );
+    WinMapDlgPoints( hwnd, aptText, 2, TRUE );
 
     WinSetWindowPos( aButtons[ulIdx].hwnd, HWND_TOP,
                      aptText[0].x, aptText[0].y, aptText[1].x, aptText[1].y,
@@ -229,10 +229,8 @@
   PSZ                  pszBtnText;
   ULONG                cbBtnText;
   HWND                 hwnd;
-  SDL_MessageBoxColor  *pSDLColors = messageboxdata->colorScheme == NULL
-                 ? NULL
-                 : (SDL_MessageBoxColor *)&messageboxdata->colorScheme->colors;
-  SDL_MessageBoxColor  *pSDLColor;
+  const SDL_MessageBoxColor  *pSDLColors = (messageboxdata->colorScheme == NULL)? NULL : messageboxdata->colorScheme->colors;
+  const SDL_MessageBoxColor  *pSDLColor;
   MSGBOXDLGDATA        stDlgData;
 
   /* Build a dialog tamplate in memory */
@@ -256,7 +254,7 @@
                   ( 48 * cSDLBtnData ); /* PP for buttons. */
 
   // Allocate memory for the dialog template.
-  pTemplate = SDL_malloc( cbTemplate );
+  pTemplate = (PDLGTEMPLATE) SDL_malloc( cbTemplate );
   // Pointer on data for dialog items in allocated memory.
   pcDlgData = &((PCHAR)pTemplate)[ sizeof(DLGTEMPLATE) +
                                    ( (2 + cSDLBtnData) * sizeof(DLGTITEM) ) ];
@@ -276,7 +274,7 @@
 
   /* First item info - frame */
 
-  pDlgItem = &pTemplate->adlgti;
+  pDlgItem = pTemplate->adlgti;
   pDlgItem->fsItemStatus = 0;  /* Reserved? */
   /* Number of dialog item child windows owned by this item. */
   pDlgItem->cChildren = 2 + cSDLBtnData; // Ststic text + buttons.
diff --git a/src/video/os2/SDL_os2video.c b/src/video/os2/SDL_os2video.c
index c6f5b7a..902f792 100644
--- a/src/video/os2/SDL_os2video.c
+++ b/src/video/os2/SDL_os2video.c
@@ -330,9 +330,9 @@
   if ( (ulFlags & KC_CHAR) != 0 )
   {
     CHAR     acUTF8[4];
-    LONG     lRC = StrUTF8( 1, &acUTF8, sizeof(acUTF8), (PSZ)&ulCharCode, 1 );
+    LONG     lRC = StrUTF8( 1, acUTF8, sizeof(acUTF8), (PSZ)&ulCharCode, 1 );
 
-    SDL_SendKeyboardText( lRC > 0 ? &acUTF8 : (PSZ)&ulCharCode );
+    SDL_SendKeyboardText( lRC > 0 ? acUTF8 : (PSZ)&ulCharCode );
   }
 }
 
@@ -421,13 +421,13 @@
     {
       // Get file name from the item.
       DrgQueryStrName( pDragItem->hstrContainerName,
-                       sizeof(acFName), &acFName );
-      pcFName = strchr( &acFName, '\0' );
+                       sizeof(acFName), acFName );
+      pcFName = strchr( acFName, '\0' );
       DrgQueryStrName( pDragItem->hstrSourceName,
-                       sizeof(acFName) - (pcFName - &acFName), pcFName );
+                       sizeof(acFName) - (pcFName - acFName), pcFName );
 
       // Send to SDL full file name converted to UTF-8.
-      pcFName = OS2_SysToUTF8( &acFName );
+      pcFName = OS2_SysToUTF8( acFName );
       SDL_SendDropFile( pcFName );
       SDL_free( pcFName );
 
@@ -852,7 +852,7 @@
   // Get client and frame window handles.
 
   WinQueryClassName( hwndUser, sizeof(acBuf), acBuf );
-  if ( !WinQueryClassInfo( pVData->hab, &acBuf, &stCI ) )
+  if ( !WinQueryClassInfo( pVData->hab, acBuf, &stCI ) )
     return SDL_SetError( "Cannot get user window class information" );
 
   if ( (stCI.flClassStyle & CS_FRAME) == 0 )
@@ -879,7 +879,7 @@
     hwndFrame = hwndUser;
 
     WinQueryClassName( hwnd, sizeof(acBuf), acBuf );
-    if ( !WinQueryClassInfo( pVData->hab, &acBuf, &stCI ) )
+    if ( !WinQueryClassInfo( pVData->hab, acBuf, &stCI ) )
       return SDL_SetError( "Cannot get client window class information" );
   }
 
diff --git a/src/video/os2/SDL_os2vman.c b/src/video/os2/SDL_os2vman.c
index fe1952d..5ad8bb1 100644
--- a/src/video/os2/SDL_os2vman.c
+++ b/src/video/os2/SDL_os2vman.c
@@ -103,7 +103,7 @@
     return TRUE;
 
   // Load vman.dll
-  ulRC = DosLoadModule( &acBuf, sizeof(acBuf), "VMAN", &hmodVMan );
+  ulRC = DosLoadModule( acBuf, sizeof(acBuf), "VMAN", &hmodVMan );
   if ( ulRC != NO_ERROR )
   {
     debug( "Could not load VMAN.DLL, rc = %u : %s", ulRC, &acBuf );