On Mon, Mar 21, 2022 at 02:14:55PM +0100, Jacek Caban wrote:
@@ -2131,10 +2130,16 @@ static void SPY_GetMsgStuff( SPY_INSTANCE *sp_e )
if (sp_e->msgnum >= 0xc000) { - if (GlobalGetAtomNameA( sp_e->msgnum, sp_e->msg_name+1, sizeof(sp_e->msg_name)-2 )) + char buf[sizeof(ATOM_BASIC_INFORMATION) + MAX_ATOM_LEN * sizeof(WCHAR)]; + ATOM_BASIC_INFORMATION *abi = (ATOM_BASIC_INFORMATION *)buf; + if (!NtQueryInformationAtom( sp_e->msgnum, AtomBasicInformation, abi, sizeof(buf), NULL )) { - sp_e->msg_name[0] = '\"'; - strcat( sp_e->msg_name, "\"" ); + unsigned int j = 0; + sp_e->msg_name[j++] = '\"'; + j += ntdll_wcstoumbs( abi->Name, abi->NameLength, + sp_e->msg_name + j, sizeof(sp_e->msg_name) - 3, FALSE ) / sizeof(WCHAR);
Hi Jacek, The divide by sizeof(WCHAR) bit doesn't look right here.
+ sp_e->msg_name[j++] = '\"'; + sp_e->msg_name[j++] = 0; return;
Huw.