summaryrefslogtreecommitdiffstats
path: root/lib/command.c
diff options
context:
space:
mode:
authorDavid Lamparter <equinox@opensourcerouting.org>2017-03-09 19:23:00 +0100
committerDavid Lamparter <equinox@opensourcerouting.org>2017-03-09 19:23:00 +0100
commit4dcee34bd603645e53f8a8265dd263a85422b63d (patch)
treed209ae03c37c4fcc8afef77b833a4cdf6cec9905 /lib/command.c
parentMerge pull request #259 from opensourcerouting/vtysh-completion-mtype-underflow (diff)
downloadfrr-4dcee34bd603645e53f8a8265dd263a85422b63d.tar.xz
frr-4dcee34bd603645e53f8a8265dd263a85422b63d.zip
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 '')
-rw-r--r--lib/command.c14
1 files changed, 4 insertions, 10 deletions
diff --git a/lib/command.c b/lib/command.c
index 6176640bf..c9b261cf2 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;