From 0124576cdadf87396cccde7f54c41342e87e80d7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fran=C3=A7ois=20Gouget?= <fgouget@codeweavers.com>
Date: Wed, 14 Feb 2001 21:43:20 +0000
Subject: [PATCH] Be smarter about the ellipsis in SPY_GetWndName.

---
 windows/spy.c | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/windows/spy.c b/windows/spy.c
index bdee905ef15..ba0233c4f80 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';
-- 
GitLab