Jacek Caban : conhost: Store title as zero terminated string.
Alexandre Julliard
julliard at winehq.org
Mon Oct 12 15:20:51 CDT 2020
Module: wine
Branch: master
Commit: b2487c17eb60424e1cb4a74e4763f057ebbf7f39
URL: https://source.winehq.org/git/wine.git/?a=commit;h=b2487c17eb60424e1cb4a74e4763f057ebbf7f39
Author: Jacek Caban <jacek at codeweavers.com>
Date: Mon Oct 12 18:26:43 2020 +0200
conhost: Store title as zero terminated string.
To make it usable for Windows functions.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
programs/conhost/conhost.c | 19 ++++++++++---------
programs/conhost/conhost.h | 1 -
2 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/programs/conhost/conhost.c b/programs/conhost/conhost.c
index 934b0a4ce1..c917b08dc0 100644
--- a/programs/conhost/conhost.c
+++ b/programs/conhost/conhost.c
@@ -2271,12 +2271,12 @@ static NTSTATUS set_console_title( struct console *console, const WCHAR *in_titl
if (size)
{
- if (!(title = malloc( size ))) return STATUS_NO_MEMORY;
+ if (!(title = malloc( size + sizeof(WCHAR) ))) return STATUS_NO_MEMORY;
memcpy( title, in_title, size );
+ title[size / sizeof(WCHAR)] = 0;
}
free( console->title );
- console->title = title;
- console->title_len = size;
+ console->title = title;
if (console->tty_output)
{
@@ -2284,9 +2284,11 @@ static NTSTATUS set_console_title( struct console *console, const WCHAR *in_titl
char *vt;
tty_write( console, "\x1b]0;", 4 );
- len = WideCharToMultiByte( get_tty_cp( console ), 0, console->title, size / sizeof(WCHAR), NULL, 0, NULL, NULL);
+ len = WideCharToMultiByte( get_tty_cp( console ), 0, console->title, size / sizeof(WCHAR),
+ NULL, 0, NULL, NULL);
if ((vt = tty_alloc_buffer( console, len )))
- WideCharToMultiByte( get_tty_cp( console ), 0, console->title, size / sizeof(WCHAR), vt, len, NULL, NULL );
+ WideCharToMultiByte( get_tty_cp( console ), 0, console->title, size / sizeof(WCHAR),
+ vt, len, NULL, NULL );
tty_write( console, "\x07", 1 );
tty_sync( console );
}
@@ -2503,10 +2505,9 @@ static NTSTATUS console_input_ioctl( struct console *console, unsigned int code,
{
WCHAR *result;
if (in_size) return STATUS_INVALID_PARAMETER;
- TRACE( "returning title %s\n", debugstr_wn(console->title,
- console->title_len / sizeof(WCHAR)) );
- if (!(result = alloc_ioctl_buffer( *out_size = min( *out_size, console->title_len ))))
- return STATUS_NO_MEMORY;
+ TRACE( "returning title %s\n", debugstr_w(console->title) );
+ *out_size = min( *out_size, console->title ? wcslen( console->title ) * sizeof(WCHAR) : 0 );
+ if (!(result = alloc_ioctl_buffer( *out_size ))) return STATUS_NO_MEMORY;
if (*out_size) memcpy( result, console->title, *out_size );
return STATUS_SUCCESS;
}
diff --git a/programs/conhost/conhost.h b/programs/conhost/conhost.h
index 322c677b91..7bc102b0df 100644
--- a/programs/conhost/conhost.h
+++ b/programs/conhost/conhost.h
@@ -88,7 +88,6 @@ struct console
struct edit_line edit_line; /* edit line context */
struct console_window *window;
WCHAR *title; /* console title */
- size_t title_len; /* length of console title */
struct history_line **history; /* lines history */
unsigned int history_size; /* number of entries in history array */
unsigned int history_index; /* number of used entries in history array */
More information about the wine-cvs
mailing list