Fixed a few more pointer to integer typecast issues for 64-bit
platforms.
diff --git a/dlls/kernel/locale.c b/dlls/kernel/locale.c
index 0346a61..3a3df32 100644
--- a/dlls/kernel/locale.c
+++ b/dlls/kernel/locale.c
@@ -1820,7 +1820,7 @@
TRACE("(%p,%08lx)\n", lpfnLocaleEnum, dwFlags);
EnumResourceLanguagesA( kernel32_handle, (LPSTR)RT_STRING,
(LPCSTR)LOCALE_ILANGUAGE, enum_lang_proc_a,
- (LONG)lpfnLocaleEnum);
+ (LONG_PTR)lpfnLocaleEnum);
return TRUE;
}
@@ -1835,7 +1835,7 @@
TRACE("(%p,%08lx)\n", lpfnLocaleEnum, dwFlags);
EnumResourceLanguagesW( kernel32_handle, (LPWSTR)RT_STRING,
(LPCWSTR)LOCALE_ILANGUAGE, enum_lang_proc_w,
- (LONG)lpfnLocaleEnum);
+ (LONG_PTR)lpfnLocaleEnum);
return TRUE;
}
diff --git a/dlls/kernel/module.c b/dlls/kernel/module.c
index 961afeb..a2fe5b5 100644
--- a/dlls/kernel/module.c
+++ b/dlls/kernel/module.c
@@ -941,7 +941,7 @@
nts = LdrGetProcedureAddress( hModule, &str, 0, (void**)&fp );
}
else
- nts = LdrGetProcedureAddress( hModule, NULL, (DWORD)function, (void**)&fp );
+ nts = LdrGetProcedureAddress( hModule, NULL, LOWORD(function), (void**)&fp );
if (nts != STATUS_SUCCESS)
{
SetLastError( RtlNtStatusToDosError( nts ) );
diff --git a/dlls/kernel/resource16.c b/dlls/kernel/resource16.c
index 20794b3..5afee94 100644
--- a/dlls/kernel/resource16.c
+++ b/dlls/kernel/resource16.c
@@ -202,7 +202,7 @@
TRACE("NameTable entry: type=%04x id=%04x\n",
pTypeInfo->type_id, pNameInfo->id );
handle = LoadResource16( pModule->self,
- (HRSRC16)((int)pNameInfo - (int)pModule) );
+ (HRSRC16)((char *)pNameInfo - (char *)pModule) );
for(p = (WORD*)LockResource16(handle); p && *p; p = (WORD *)((char*)p+*p))
{
TRACE(" type=%04x '%s' id=%04x '%s'\n",
@@ -226,7 +226,7 @@
if (strcasecmp( resId, (char*)(p+3)+strlen((char*)(p+3))+1 )) continue;
}
- else if (HIWORD(resId) || (((DWORD)resId & ~0x8000) != p[2]))
+ else if (HIWORD(resId) || ((LOWORD(resId) & ~0x8000) != p[2]))
continue;
/* If we get here, we've found the entry */
@@ -507,7 +507,7 @@
while (nbItems)
{
/* align on DWORD boundary (32-bit only) */
- dialog32 = (LPVOID)((((int)dialog32) + 3) & ~3);
+ dialog32 = (LPVOID)(((UINT_PTR)dialog32 + 3) & ~3);
if (dialogEx)
{
@@ -636,7 +636,7 @@
while (nbItems)
{
/* align on DWORD boundary */
- p = (LPVOID)((((int)p) + 3) & ~3);
+ p = (LPVOID)(((UINT_PTR)p + 3) & ~3);
if (dialogEx)
{
@@ -736,7 +736,7 @@
menu32 = (LPWSTR)menu32 + strlenW( (LPWSTR)menu32 ) + 1;
/* align on DWORD boundary (32-bit only) */
- menu32 = (LPVOID)((((int)menu32) + 3) & ~3);
+ menu32 = (LPVOID)(((UINT_PTR)menu32 + 3) & ~3);
/* If popup, transfer helpid */
if ( flags & 1)
@@ -787,7 +787,7 @@
p = (LPWSTR)p + strlenW( (LPWSTR)p ) + 1;
/* align on DWORD boundary (32-bit only) */
- p = (LPVOID)((((int)p) + 3) & ~3);
+ p = (LPVOID)(((UINT_PTR)p + 3) & ~3);
/* If popup, skip helpid */
if ( flags & 1)
diff --git a/dlls/kernel/selector.c b/dlls/kernel/selector.c
index 678850a..2bd9180 100644
--- a/dlls/kernel/selector.c
+++ b/dlls/kernel/selector.c
@@ -481,7 +481,7 @@
const void *base;
SEGPTR ret = 0;
- if (!HIWORD(ptr)) return (SEGPTR)ptr;
+ if (!HIWORD(ptr)) return (SEGPTR)LOWORD(ptr);
base = (const char *)ptr - ((unsigned int)ptr & 0x7fff);
HeapLock( GetProcessHeap() );