aboutsummaryrefslogtreecommitdiffhomepage
path: root/builtin_complete.cpp
diff options
context:
space:
mode:
authorGravatar ridiculousfish <corydoras@ridiculousfish.com>2012-02-26 13:46:21 -0800
committerGravatar ridiculousfish <corydoras@ridiculousfish.com>2012-02-26 13:46:21 -0800
commitad7c5886bc62d2d36d458b9769a6294bffb030da (patch)
treeee712fb32b0937438bc7e0ad6078443ccaf71133 /builtin_complete.cpp
parentb30090f9461f246053b846173c81682018901c7e (diff)
Fix a crash in complete -C
Diffstat (limited to 'builtin_complete.cpp')
-rw-r--r--builtin_complete.cpp15
1 files changed, 8 insertions, 7 deletions
diff --git a/builtin_complete.cpp b/builtin_complete.cpp
index 3b9657ce..658ff63b 100644
--- a/builtin_complete.cpp
+++ b/builtin_complete.cpp
@@ -296,7 +296,8 @@ static int builtin_complete( parser_t &parser, wchar_t **argv )
wcstring_list_t gnu_opt, old_opt;
const wchar_t *comp=L"", *desc=L"", *condition=L"";
- const wchar_t *do_complete = 0;
+ bool do_complete = false;
+ wcstring do_complete_param;
wcstring_list_t cmd;
wcstring_list_t path;
@@ -477,7 +478,8 @@ static int builtin_complete( parser_t &parser, wchar_t **argv )
break;
case 'C':
- do_complete = woptarg?woptarg:reader_get_buffer();
+ do_complete = true;
+ do_complete_param = woptarg ? woptarg : reader_get_buffer();
break;
case 'h':
@@ -535,19 +537,18 @@ static int builtin_complete( parser_t &parser, wchar_t **argv )
{
std::vector<completion_t> comp;
- const wchar_t *prev_temporary_buffer = temporary_buffer;
-
const wchar_t *token;
- parse_util_token_extent( do_complete, wcslen( do_complete ), &token, 0, 0, 0 );
+ parse_util_token_extent( do_complete_param.c_str(), do_complete_param.size(), &token, 0, 0, 0 );
- temporary_buffer = do_complete;
+ const wchar_t *prev_temporary_buffer = temporary_buffer;
+ temporary_buffer = do_complete_param.c_str();
if( recursion_level < 1 )
{
recursion_level++;
- complete( do_complete, comp, COMPLETE_DEFAULT );
+ complete( do_complete_param, comp, COMPLETE_DEFAULT );
for( size_t i=0; i< comp.size() ; i++ )
{