From a7facfb760ff3169e8a1a49078b98199f541f910 Mon Sep 17 00:00:00 2001 From: Konrad Borowski Date: Thu, 1 May 2014 09:23:23 +0200 Subject: Fix memory leak when displaying bind list. This also removes duplication from the code. --- builtin.cpp | 28 +++++++++------------------- 1 file changed, 9 insertions(+), 19 deletions(-) (limited to 'builtin.cpp') diff --git a/builtin.cpp b/builtin.cpp index 9f63e515..741dbd4a 100644 --- a/builtin.cpp +++ b/builtin.cpp @@ -425,27 +425,17 @@ static void builtin_bind_list(const wchar_t *bind_mode) } wcstring tname; - if (input_terminfo_get_name(seq, tname)) - { - append_format(stdout_buffer, L"bind -k %ls -M %ls -m %ls", tname.c_str(), mode.c_str(), sets_mode.c_str()); - for (size_t i = 0; i < ecmds.size(); i++) - { - wcstring ecmd = ecmds.at(i); - append_format(stdout_buffer, L" %ls", escape(ecmd.c_str(), 1)); - } - append_format(stdout_buffer, L"\n"); - } - else + + const wcstring eseq = input_terminfo_get_name(seq, tname) ? tname : escape_string(seq, 1); + append_format(stdout_buffer, L"bind -k %ls -M %ls -m %ls", eseq.c_str(), mode.c_str(), sets_mode.c_str()); + for (size_t i = 0; i < ecmds.size(); i++) { - const wcstring eseq = escape_string(seq, 1); - append_format(stdout_buffer, L"bind -k %ls -M %ls -m %ls", eseq.c_str(), mode.c_str(), sets_mode.c_str()); - for (size_t i = 0; i < ecmds.size(); i++) - { - wcstring ecmd = ecmds.at(i); - append_format(stdout_buffer, L" %ls", escape(ecmd.c_str(), 1)); - } - append_format(stdout_buffer, L"\n"); + wcstring ecmd = ecmds.at(i); + wchar_t *escaped = escape(ecmd.c_str(), 1); + append_format(stdout_buffer, L" %ls", escaped); + free(escaped); } + append_format(stdout_buffer, L"\n"); } } -- cgit v1.2.3