aboutsummaryrefslogtreecommitdiffhomepage
path: root/reader.c
diff options
context:
space:
mode:
authorGravatar axel <axel@liljencrantz.se>2005-12-04 11:56:13 +1000
committerGravatar axel <axel@liljencrantz.se>2005-12-04 11:56:13 +1000
commite534a952b77f7c422639f87b932184e67c2a1a81 (patch)
tree008ca18abfa8004e11cdde290fed0288d2be7d36 /reader.c
parent754d8d37125609dc67c1f41d9b35f3bfa468317c (diff)
Fix display bug causing the wrong completion string prefix to be shown in some situations
darcs-hash:20051204015613-ac50b-3c9feaf11d9657a30272303f9605f8139a0c5923.gz
Diffstat (limited to 'reader.c')
-rw-r--r--reader.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/reader.c b/reader.c
index aaa39e74..9b2b1ad3 100644
--- a/reader.c
+++ b/reader.c
@@ -1093,7 +1093,7 @@ static wchar_t get_quote( wchar_t *cmd, int l )
\param pos An index in the string which is inside the parameter
\param quote If not 0, store the type of quote this parameter has, can be either ', " or \\0, meaning the string is not quoted.
\param offset If not 0, get_param will store a pointer to the beginning of the parameter.
- \param string If not o, get_parm will store a copy of the parameter string as returned by the tokenizer.
+ \param string If not 0, get_parm will store a copy of the parameter string as returned by the tokenizer.
\param type If not 0, get_param will store the token type as returned by tok_last.
*/
static void get_param( wchar_t *cmd,
@@ -1123,6 +1123,7 @@ static void get_param( wchar_t *cmd,
*type = tok_last_type( &tok );
if( string != 0 )
wcscpy( *string, tok_last( &tok ) );
+
prev_pos = tok_get_pos( &tok );
}
@@ -1381,13 +1382,12 @@ static int handle_completions( array_list_t *comp )
0,
0 );
-
len = &data->buff[data->buff_pos]-prefix_start;
-
+
if( len <= PREFIX_MAX_LEN )
{
prefix = malloc( sizeof(wchar_t)*(len+1) );
- wcsncpy( prefix, prefix_start, len );
+ wcslcpy( prefix, prefix_start, len );
prefix[len]=L'\0';
}
else
@@ -1401,6 +1401,8 @@ static int handle_completions( array_list_t *comp )
prefix = wcsdupcat( tmp,
prefix_start + (len - PREFIX_MAX_LEN+1) );
+ prefix[PREFIX_MAX_LEN] = 0;
+
}
{
@@ -2347,9 +2349,9 @@ static int read_i()
that we can handle a call to reader_set_buffer
during evaluation.
*/
-
+
tmp = wcsdup( reader_readline() );
-
+
data->buff_pos=data->buff_len=0;
data->buff[data->buff_len]=L'\0';
reader_run_command( tmp );
@@ -2397,7 +2399,6 @@ static int can_read( int fd )
static int wchar_private( wchar_t c )
{
return ( (c >= 0xe000) && (c <= 0xf8ff ) );
-
}
wchar_t *reader_readline()