Ignore:
Timestamp:
Oct 6, 2003, 11:49:38 AM (22 years ago)
Author:
sandervl
Message:

KOM: Fixed heap corruption when changing windows text (DBCS)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/user32/win32wbase.cpp

    r10216 r10261  
    1 /* $Id: win32wbase.cpp,v 1.377 2003-08-08 13:30:20 sandervl Exp $ */
     1/* $Id: win32wbase.cpp,v 1.378 2003-10-06 09:49:38 sandervl Exp $ */
    22/*
    33 * Win32 Window Base Class for OS/2
     
    15861586        else
    15871587        {
    1588           // determine length of new text
    1589           int iTextLength = strlen(lpsz);
    1590 
    1591           if (windowNameLengthA < iTextLength)
    1592           {
    15931588            if (windowNameA)
    15941589            {
     
    16021597              windowNameW = NULL;
    16031598            }
    1604           }
    1605 
    1606           windowNameLengthA = iTextLength;
    1607           if(!windowNameA)
    1608             windowNameA = (LPSTR)_smalloc(windowNameLengthA+1);
     1599
     1600          windowNameLengthA = strlen( lpsz );
     1601          windowNameA = (LPSTR)_smalloc(windowNameLengthA+1);
    16091602          strcpy(windowNameA, lpsz);
    1610           windowNameLengthW = lstrlenAtoW( windowNameA, -1 );
    1611           if(!windowNameW)
    1612             windowNameW = (LPWSTR)_smalloc(( windowNameLengthW + 1 )*sizeof(WCHAR));
     1603          windowNameLengthW = lstrlenAtoW( lpsz, -1 );
     1604          windowNameW = (LPWSTR)_smalloc(( windowNameLengthW + 1 )*sizeof(WCHAR));
    16131605          lstrcpyAtoW( windowNameW, windowNameA );
    16141606        }
     
    21242116
    21252117    case WM_IME_CHAR:
    2126         if( wParam & 0xFF00 ) // DBCS ? 
    2127             SendMessageA( getWindowHandle(), WM_CHAR, ( WPARAM )( BYTE )( wParam >> 8 ), lParam ); 
     2118        if( wParam & 0xFF00 ) // DBCS ?
     2119            SendMessageA( getWindowHandle(), WM_CHAR, ( WPARAM )( BYTE )( wParam >> 8 ), lParam );
    21282120        SendMessageA( getWindowHandle(), WM_CHAR, ( WPARAM )( BYTE )( wParam & 0xFF ), lParam );
    21292121        break;
     
    21692161        else
    21702162        {
    2171           // determine length of new text
    2172           int iTextLength = lstrlenW(lpsz);
    2173 
    2174           if (windowNameLengthW < iTextLength)
    2175           {
    21762163            if (windowNameA)
    21772164            {
     
    21852172              windowNameW = NULL;
    21862173            }
    2187           }
    2188 
    2189           windowNameLengthW = iTextLength;
    2190           if(!windowNameW)
    2191             windowNameW = (LPWSTR)_smalloc((windowNameLengthW+1)*sizeof(WCHAR));
     2174
     2175          windowNameLengthW = lstrlenW( lpsz );
     2176          windowNameW = (LPWSTR)_smalloc((windowNameLengthW+1)*sizeof(WCHAR));
    21922177          strcpyW(windowNameW, lpsz);
    2193           windowNameLengthA = lstrlenWtoA( windowNameW, -1 );
    2194           if(!windowNameA)
    2195             windowNameA = (LPSTR)_smalloc( windowNameLengthA + 1 );
     2178          windowNameLengthA = lstrlenWtoA( lpsz, -1 );
     2179          windowNameA = (LPSTR)_smalloc( windowNameLengthA + 1 );
    21962180          lstrcpyWtoA( windowNameA, windowNameW );
    21972181        }
Note: See TracChangeset for help on using the changeset viewer.