Fix data type casting when setting up menus on Windows.

src/w32menu.c (add_menu_item): Cast to UINT_PTR when assigning
 info.dwItemData.  Fixes crashes on 64-bit Windows.  Suggested by
 Fabrice Popineau <fabrice.popineau@supelec.fr>.
This commit is contained in:
Eli Zaretskii 2012-07-21 16:33:32 +03:00
parent 784051c42a
commit 2d5c5f7da9
2 changed files with 14 additions and 1 deletions

View file

@ -1,3 +1,9 @@
2012-07-21 Eli Zaretskii <eliz@gnu.org>
* w32menu.c (add_menu_item): Cast to UINT_PTR when assigning
info.dwItemData. Fixes crashes on 64-bit Windows. Suggested by
Fabrice Popineau <fabrice.popineau@supelec.fr>.
2012-07-21 Jan Djärv <jan.h.d@swipnet.se>
* nsterm.m (accessibilityAttributeValue): New function. (Bug#11134).

View file

@ -1533,7 +1533,14 @@ add_menu_item (HMENU menu, widget_value *wv, HMENU item)
until it is ready to be displayed, since GC can happen while
menus are active. */
if (!NILP (wv->help))
info.dwItemData = (DWORD) XLI (wv->help);
{
/* As of Jul-2012, w32api headers say that dwItemData
has DWORD type, but that's a bug: it should actually
be UINT_PTR, which is correct for 32-bit and 64-bit
Windows alike. MSVC headers get it right; hopefully,
MinGW headers will, too. */
info.dwItemData = (UINT_PTR) XLI (wv->help);
}
if (wv->button_type == BUTTON_TYPE_RADIO)
{
/* CheckMenuRadioItem allows us to differentiate TOGGLE and