diff --git a/windows/spy.c b/windows/spy.c index bdee905ef156eecb2f7547b788ca3a36401b411f..ba0233c4f80270da1dbe52291d57d05d2421131a 100644 --- a/windows/spy.c +++ b/windows/spy.c @@ -1444,23 +1444,27 @@ const char *SPY_GetWndName( HWND hwnd ) WND* pWnd = WIN_FindWndPtr( hwnd ); if( pWnd ) { - INT n = sizeof(wnd_buffer) - 6; LPSTR p = wnd_buffer; char postfix; if( pWnd->text && pWnd->text[0] != '\0' ) { LPWSTR src = pWnd->text; + int n=sizeof(wnd_buffer)-2; *(p++) = postfix = '\"'; - while ((n-- > 1) && *src) *p++ = *src++; - if( *src ) for( n = 0; n < 3; n++ ) *(p++)='.'; + while ((n-- > 0) && *src) *p++ = *src++; } else /* get class name */ { - *(p++)='{'; - GlobalGetAtomNameA((ATOM) GetClassWord(pWnd->hwndSelf, GCW_ATOM), p, n + 1); - p += strlen(p); - postfix = '}'; + *(p++) = '{'; + p+=GlobalGetAtomNameA((ATOM) GetClassWord(pWnd->hwndSelf, GCW_ATOM), p, sizeof(wnd_buffer)-1); + postfix='}'; + } + if( p-wnd_buffer == sizeof(wnd_buffer)-1 ) { + p=wnd_buffer+sizeof(wnd_buffer)-5; + *(p++) = '.'; + *(p++) = '.'; + *(p++) = '.'; } *(p++) = postfix; *(p++) = '\0';