[issue12186] readline.replace_history_item still leaks memory

2016-06-20 Thread Martin Panter

Martin Panter added the comment:

This seems like something that should be fixed in Readline, rather than Python. 
Judging by the rl_clear_history() documentation, it sounds like this is private 
data. Maybe we need a version of rl_free_undo_list() that works for old history 
items, or a Readline library wrapper for free_history_entry().

--
nosy: +martin.panter
resolution:  -> third party

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue12186] readline.replace_history_item still leaks memory

2013-10-12 Thread Antoine Pitrou

Changes by Antoine Pitrou :


--
nosy: +haypo
stage:  -> patch review
versions:  -Python 2.6, Python 3.1, Python 3.2

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue12186] readline.replace_history_item still leaks memory

2011-06-02 Thread stefanholek

stefanholek  added the comment:

These undo lists come into existence when history entries are edited 
interactively (Arrow-Up, edit line, Arrow-Up, edit line, Enter -> undo list of 
first history entry leaks).

--
components: +Extension Modules
versions: +Python 2.6, Python 2.7, Python 3.1, Python 3.2, Python 3.3, Python 
3.4

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue12186] readline.replace_history_item still leaks memory

2011-05-26 Thread stefanholek

New submission from stefanholek :

This is a continuation of issue #9450.

The 'data' element of a history entry may point to an undo list for the entry. 
When freeing the entry the associated undo list must be freed as well, and 
'free(data)' alone does not cut it. I have not found any other use of the 
'data' element in all of GNU Readline, so it is safe to assume it is either 
NULL or an undo list.

diff --git a/rl/readline.c b/rl/readline.c
index 26ac1e2..c8efd5b 100644
--- a/rl/readline.c
+++ b/rl/readline.c
@@ -541,8 +541,18 @@
 static void
 _py_free_history_entry(HIST_ENTRY *entry)
 {
-   histdata_t data = free_history_entry(entry);
-   free(data);
+   UNDO_LIST *undo_list;
+   UNDO_LIST *release;
+
+   /* A history entry may have an undo_list attached */
+   undo_list = (UNDO_LIST *)free_history_entry(entry);
+   while (undo_list) {
+   release = undo_list;
+   undo_list = undo_list->next;
+   if (release->what == UNDO_DELETE)
+   free(release->text);
+   free(release);
+   }
 }

--
components: Library (Lib)
messages: 136951
nosy: stefanholek
priority: normal
severity: normal
status: open
title: readline.replace_history_item still leaks memory
type: resource usage

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com