Author: cwittich
Date: Mon Oct 27 04:49:27 2008
New Revision: 37017
URL:
http://svn.reactos.org/svn/reactos?rev=37017&view=rev
Log:
sync Shell_NotifyIconW with wine 1.1.7
Modified:
trunk/reactos/dll/win32/shell32/systray.c
Modified: trunk/reactos/dll/win32/shell32/systray.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/systray.…
==============================================================================
--- trunk/reactos/dll/win32/shell32/systray.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/systray.c [iso-8859-1] Mon Oct 27 04:49:27 2008
@@ -104,6 +104,7 @@
HWND tray;
COPYDATASTRUCT cds;
char *buffer = NULL;
+ BOOL ret;
TRACE("dwMessage = %d, nid->cbSize=%d\n", dwMessage, nid->cbSize);
@@ -169,7 +170,11 @@
GetBitmapBits(iconinfo.hbmMask, cbMaskBits, buffer);
buffer += cbMaskBits;
GetBitmapBits(iconinfo.hbmColor, cbColourBits, buffer);
- buffer += cbColourBits;
+
+ /* Reset pointer to allocated block so it can be freed later.
+ * Note that cds.lpData cannot be passed to HeapFree since it
+ * points to nid when no icon info is found. */
+ buffer = cds.lpData;
DeleteObject(iconinfo.hbmMask);
DeleteObject(iconinfo.hbmColor);
@@ -181,11 +186,11 @@
cds.lpData = nid;
}
- SendMessageW(tray, WM_COPYDATA, (WPARAM)nid->hWnd, (LPARAM)&cds);
+ ret = SendMessageW(tray, WM_COPYDATA, (WPARAM)nid->hWnd, (LPARAM)&cds);
/* FIXME: if statement only needed because we don't support interprocess
* icon handles */
HeapFree(GetProcessHeap(), 0, buffer);
- return TRUE;
+ return ret;
}