Initialize variable word in complete
Commit Message
The complete function should set parameter word to the end of the
word to complete. However, completion_find_completion_word may fail,
leaving word uninitialized.
To make sure word is always set, initialize it to the completion point
which is the end of the line parameter.
gdb/Changelog
PR cli/24587
* completer.c (complete): Initialize variable word.
---
gdb/ChangeLog | 5 +++++
gdb/completer.c | 7 +++++++
2 files changed, 12 insertions(+)
Comments
>>>>> "Jan" == Jan Vrany <jan.vrany@fit.cvut.cz> writes:
Jan> gdb/Changelog
Jan> PR cli/24587
Jan> * completer.c (complete): Initialize variable word.
Thank you. This is ok.
Tom
Hi,
fixed and pushed, thanks!
Jan
On Wed, 2019-05-29 at 11:40 -0700, Keith Seitz wrote:
> Hi,
>
> Tom already approved this, but I just noticed a little / obvious typo. If
> you catch this before pushing, please change. Otherwise, don't worry about it.
>
> On 5/22/19 4:14 AM, Jan Vrany wrote:
> > diff --git a/gdb/completer.c b/gdb/completer.c
> > index cc2f80bc66..954f435259 100644
> > --- a/gdb/completer.c
> > +++ b/gdb/completer.c
> > @@ -1622,6 +1622,13 @@ complete (const char *line, char const **word, int *quote_char)
> > completion_tracker tracker_handle_completions;
> > completion_tracker *tracker;
> >
> > + /* The WORD should be set to the end of word to complete. We initialize
> > + to the completion point which is assumed to be at the end of LINE.
> > + This leaves WORD to be initialized to a sensible value in cases
> > + completion_find_completion_word() fails i.e., throws an exception.
> > + See bug 24587. */
> > + *word = line + strlen(line);
> ^^^^^^^^^^^^
>
> That should read "strlen (line);".
>
> Keith
>
> > +
> > try
> > {
> > *word = completion_find_completion_word (tracker_handle_brkchars,
>
@@ -1,3 +1,8 @@
+2019-05-22 Jan Vrany <jan.vrany@fit.cvut.cz>
+
+ PR cli/24587
+ * completer.c (complete): Initialize variable word.
+
2019-05-21 Andrew Burgess <andrew.burgess@embecosm.com>
PR gdb/18644:
@@ -1622,6 +1622,13 @@ complete (const char *line, char const **word, int *quote_char)
completion_tracker tracker_handle_completions;
completion_tracker *tracker;
+ /* The WORD should be set to the end of word to complete. We initialize
+ to the completion point which is assumed to be at the end of LINE.
+ This leaves WORD to be initialized to a sensible value in cases
+ completion_find_completion_word() fails i.e., throws an exception.
+ See bug 24587. */
+ *word = line + strlen(line);
+
try
{
*word = completion_find_completion_word (tracker_handle_brkchars,