From 06cf4aaf714c9ba356753d5b4f6980d67cb6e613 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jan=20Tr=C3=A1vn=C3=AD=C4=8Dek?= <jan.travnicek@fit.cvut.cz>
Date: Tue, 25 Jan 2022 16:29:25 +0100
Subject: [PATCH] cli: fix few memory leaks

---
 aql2/src/prompt/ReadlinePromptHistory.cpp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/aql2/src/prompt/ReadlinePromptHistory.cpp b/aql2/src/prompt/ReadlinePromptHistory.cpp
index e5e95b3faf..1ce2f0a87a 100644
--- a/aql2/src/prompt/ReadlinePromptHistory.cpp
+++ b/aql2/src/prompt/ReadlinePromptHistory.cpp
@@ -61,7 +61,8 @@ void ReadlinePromptHistory::history_transform ( Callable callable ) {
 		int i = 0;
 		while ( * history ) {
 			char * tmp = callable ( ( * history )->line );
-			replace_history_entry ( i, tmp, ( * history )->data );
+			HIST_ENTRY * old = replace_history_entry ( i, tmp, ( * history )->data );
+			free_history_entry ( old );
 			free ( tmp );
 			++ history;
 			++ i;
@@ -76,6 +77,7 @@ ReadlinePromptHistory::ReadlinePromptHistory ( std::string history_file ) : m_hi
 ReadlinePromptHistory::~ ReadlinePromptHistory ( ) {
 	ReadlinePromptHistory::writeHistory ( m_history_file );
 	clear_history ( );
+	free ( history_list ( ) ); // Note: this may not be entiery safe, it depends on the implementation of readline (but 5.0 through 8.2-alpha) are safe.
 }
 
 void ReadlinePromptHistory::readHistory ( const std::string & history_file ) {
-- 
GitLab