- Don't use STATIC
[reactos.git] / reactos / subsys / csrss / win32csr / guiconsole.c
index 54dfd43..43c5a1b 100644 (file)
@@ -457,7 +457,7 @@ GuiInvalidateCell(PGUI_CONSOLE_DATA GuiData, HWND Wnd, UINT x, UINT y)
 }
 
 static VOID STDCALL
-GuiWriteStream(PCSRSS_CONSOLE Console, RECT *Region, UINT CursorStartX, UINT CursorStartY,
+GuiWriteStream(PCSRSS_CONSOLE Console, RECT *Region, LONG CursorStartX, LONG CursorStartY,
                UINT ScrolledLines, CHAR *Buffer, UINT Length)
 {
   PGUI_CONSOLE_DATA GuiData = (PGUI_CONSOLE_DATA) Console->PrivateData;
@@ -786,6 +786,7 @@ GuiConsoleNotifyWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
   HWND NewWindow;
   LONG WindowCount;
   MSG Msg;
+  PWCHAR Buffer, Title;
   PCSRSS_CONSOLE Console = (PCSRSS_CONSOLE) lParam;
 
   switch(msg)
@@ -794,8 +795,20 @@ GuiConsoleNotifyWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
         SetWindowLongW(hWnd, GWL_USERDATA, 0);
         return 0;
       case PM_CREATE_CONSOLE:
+        Buffer = HeapAlloc(Win32CsrApiHeap, 0,
+                           Console->Title.Length + sizeof(WCHAR));
+        if (NULL != Buffer)
+          {
+            memcpy(Buffer, Console->Title.Buffer, Console->Title.Length);
+            Buffer[Console->Title.Length / sizeof(WCHAR)] = L'\0';
+            Title = Buffer;
+          }
+        else
+          {
+            Title = L"";
+          }
         NewWindow = CreateWindowW(L"ConsoleWindowClass",
-                                  Console->Title.Buffer,
+                                  Title,
                                   WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX,
                                   CW_USEDEFAULT,
                                   CW_USEDEFAULT,
@@ -805,6 +818,10 @@ GuiConsoleNotifyWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
                                   NULL,
                                   (HINSTANCE) GetModuleHandleW(NULL),
                                   (PVOID) Console);
+        if (NULL != Buffer)
+          {
+            HeapFree(Win32CsrApiHeap, 0, Buffer);
+          }
         Console->hWindow = NewWindow;
         if (NULL != NewWindow)
           {
@@ -931,15 +948,33 @@ GuiInitScreenBuffer(PCSRSS_CONSOLE Console, PCSRSS_SCREEN_BUFFER Buffer)
   Buffer->DefaultAttrib = 0x0f;
 }
 
-STATIC BOOL STDCALL
+static BOOL STDCALL
 GuiChangeTitle(PCSRSS_CONSOLE Console)
 {
-  SendMessageW(Console->hWindow, WM_SETTEXT, 0, (LPARAM) Console->Title.Buffer);
+  PWCHAR Buffer, Title;
+
+  Buffer = HeapAlloc(Win32CsrApiHeap, 0,
+                     Console->Title.Length + sizeof(WCHAR));
+  if (NULL != Buffer)
+    {
+      memcpy(Buffer, Console->Title.Buffer, Console->Title.Length);
+      Buffer[Console->Title.Length / sizeof(WCHAR)] = L'\0';
+      Title = Buffer;
+    }
+  else
+    {
+      Title = L"";
+    }
+  SendMessageW(Console->hWindow, WM_SETTEXT, 0, (LPARAM) Title);
+  if (NULL != Buffer)
+    {
+      HeapFree(Win32CsrApiHeap, 0, Buffer);
+    }
 
   return TRUE;
 }
 
-STATIC BOOL STDCALL
+static BOOL STDCALL
 GuiChangeIcon(PCSRSS_CONSOLE Console)
 {
   SendMessageW(Console->hWindow, WM_SETICON, ICON_BIG, (LPARAM)Console->hWindowIcon);