From 1d9886d0f73250eae2a4b8e7e0a5793597d1c8a7 Mon Sep 17 00:00:00 2001 From: Kevin Ballard Date: Tue, 2 Sep 2014 14:49:17 -0700 Subject: [PATCH] Don't segfault when erasing short option completions When using `complete -s x -e`, the long option is unspecified, which makes it NULL. Comparing this to a `wcstring` segfaults. Fixes #1182. --- complete.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/complete.cpp b/complete.cpp index 71df3e983..8ede1eb22 100644 --- a/complete.cpp +++ b/complete.cpp @@ -630,7 +630,7 @@ bool completion_entry_t::remove_option(wchar_t short_opt, const wchar_t *long_op for (option_list_t::iterator iter = this->options.begin(); iter != this->options.end();) { complete_entry_opt_t &o = *iter; - if (short_opt==o.short_opt || long_opt == o.long_opt) + if (short_opt==o.short_opt || (long_opt && long_opt == o.long_opt)) { /* fwprintf( stderr, L"remove option -%lc --%ls\n",