I think that if condition isn't correct here, it has to contain `NIF_INFO` in flags as well.
I made these adjustments below:
```diff @@ -124,6 +124,10 @@ BOOL WINAPI Shell_NotifyIconA(DWORD dwMessage, PNOTIFYICONDATAA pnid) return Shell_NotifyIconW(dwMessage, &nidW); }
+ +/************************************************************************* + * get_bitmap_info Helper function for filling BITMAP structs and calculating buffer size in bits + */ static void get_bitmap_info( ICONINFO *icon_info, BITMAP *mask, BITMAP *color, LONG *mask_bits, LONG *color_bits ) { if ((icon_info->hbmMask && !GetObjectW( icon_info->hbmMask, sizeof(*mask), mask )) || @@ -216,7 +220,7 @@ BOOL WINAPI Shell_NotifyIconW(DWORD dwMessage, PNOTIFYICONDATAW nid) if (nid->uFlags & NIF_ICON) GetIconInfo( nid->hIcon, &icon_info );
- if ((nid->dwInfoFlags & NIIF_ICONMASK) == NIIF_USER) + if ((nid->uFlags & NIF_INFO) && (nid->dwInfoFlags & NIIF_ICONMASK) == NIIF_USER) GetIconInfo( nid->hBalloonIcon, &balloon_icon_info ); ```
changed a same condition in explorer.exe code.