From 4dcee34bd603645e53f8a8265dd263a85422b63d Mon Sep 17 00:00:00 2001 From: David Lamparter Date: Thu, 9 Mar 2017 19:23:00 +0100 Subject: [PATCH] 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 --- lib/command.c | 14 ++++---------- 1 file 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;