Fixed GetConsoleTitleA/W. Modified: trunk/reactos/lib/kernel32/misc/console.c _____
Modified: trunk/reactos/lib/kernel32/misc/console.c --- trunk/reactos/lib/kernel32/misc/console.c 2005-09-10 15:17:07 UTC (rev 17776) +++ trunk/reactos/lib/kernel32/misc/console.c 2005-09-10 15:18:42 UTC (rev 17777) @@ -3056,18 +3056,17 @@
return 0; }
- if(nSize * sizeof(WCHAR) < Request->Data.GetTitleRequest.Length) + if(nSize * sizeof(WCHAR) <= Request->Data.GetTitleRequest.Length) { - wcsncpy(lpConsoleTitle, Request->Data.GetTitleRequest.Title, nSize - 1); - lpConsoleTitle[nSize--] = L'\0'; + nSize--; } else { nSize = Request->Data.GetTitleRequest.Length / sizeof (WCHAR); - wcscpy(lpConsoleTitle, Request->Data.GetTitleRequest.Title); - lpConsoleTitle[nSize] = L'\0'; } - + memcpy(lpConsoleTitle, Request->Data.GetTitleRequest.Title, nSize * sizeof(WCHAR)); + lpConsoleTitle[nSize] = L'\0'; + RtlFreeHeap(RtlGetProcessHeap(), 0, Request);
return nSize; @@ -3088,8 +3087,8 @@ DWORD nSize ) { - wchar_t WideTitle [CSRSS_MAX_TITLE_LENGTH]; - DWORD nWideTitle = sizeof WideTitle; + WCHAR WideTitle [CSRSS_MAX_TITLE_LENGTH + 1]; + DWORD nWideTitle = CSRSS_MAX_TITLE_LENGTH + 1; DWORD nWritten;
if (!lpConsoleTitle || !nSize) return 0; @@ -3102,7 +3101,7 @@ (LPWSTR) WideTitle, // address of wide-character string nWideTitle, // number of characters in string lpConsoleTitle, // address of buffer for new string - nSize, // size of buffer + nSize - 1, // size of buffer NULL, // FAST NULL // FAST )))