diff options
| author | David Lamparter <equinox@opensourcerouting.org> | 2017-03-09 19:23:00 +0100 | 
|---|---|---|
| committer | David Lamparter <equinox@opensourcerouting.org> | 2017-03-09 19:23:00 +0100 | 
| commit | 4dcee34bd603645e53f8a8265dd263a85422b63d (patch) | |
| tree | d209ae03c37c4fcc8afef77b833a4cdf6cec9905 /lib/command.c | |
| parent | 72c62cb803d8b79a2627cd7d8d25a0f801423c49 (diff) | |
Revert "lib: Fix tab completions memleak, memory stats corruption"
This reverts commit 039dc61292de5f3ed5f46316b1940ab6bb184c3f.
The patch actually made the situation worse since the return value from
cmd_complete_command_real() was now inconsistently allocated from
different memory stat pools.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Diffstat (limited to 'lib/command.c')
| -rw-r--r-- | lib/command.c | 14 | 
1 files changed, 4 insertions, 10 deletions
diff --git a/lib/command.c b/lib/command.c index 6176640bf6..c9b261cf2a 100644 --- a/lib/command.c +++ b/lib/command.c @@ -2445,11 +2445,8 @@ cmd_complete_command_real (vector vline, struct vty *vty, int *status, int islib    /* Only one matched */    if (vector_slot (matchvec, 1) == NULL)      { -      size_t index_size = matchvec->alloced * sizeof (void *); -      match_str = XMALLOC (MTYPE_TMP, index_size); -      memcpy (match_str, matchvec->index, index_size); -      vector_free (matchvec); - +      match_str = (char **) matchvec->index; +      vector_only_wrapper_free (matchvec);        *status = CMD_COMPLETE_FULL_MATCH;        return match_str;      } @@ -2491,11 +2488,8 @@ cmd_complete_command_real (vector vline, struct vty *vty, int *status, int islib  	      /* Make new matchvec. */  	      matchvec = vector_init (INIT_MATCHVEC_SIZE);  	      vector_set (matchvec, lcdstr); - -              size_t index_size = matchvec->alloced * sizeof (void *); -              match_str = XMALLOC (MTYPE_TMP, index_size); -              memcpy (match_str, matchvec->index, index_size); -              vector_free (matchvec); +              match_str = (char **) matchvec->index; +              vector_only_wrapper_free (matchvec);  	      *status = CMD_COMPLETE_MATCH;  	      return match_str;  | 
