[Python-Dev] [1593035] Re: readline problem with python-2.5
Kate Minola
kate01123 at gmail.com
Sat Nov 18 20:40:45 CET 2006
I have a fix to my bug report 1593035 regarding
python-2.5 not working with readline on ia64-Linux.
This bug was found while trying to port SAGE
(http://modular.math.washington.edu/sage/) to ia64-Linux.
The problem is caused by the line of Modules/readline.c
in flex_complete()
return completion_matches(text, *on_completion);
In readline-5.2, completion_matches() is defined in
compat.c as
char ** completion_matches(const char *,rl_compentry_func_t *);
But in Modules/readline.c completion_matches() by default is
assumed to return an int, and on_completion() is defined as
char *.
To fix the problem, both the function itself and the
second argument need to be cast to the correct types
in Modules/readline.c/flex_complete()
return (char **) completion_matches(text, (rl_compentry_func_t *)*on_completio
n);
and completion_matches needs to be defined as an external
function. I added the following else clause to the ifdef
at the top of Modules/readline.c/flex_complete()
#ifdef HAVE_RL_COMPLETION_MATCHES
#define completion_matches(x, y) \
rl_completion_matches((x), ((rl_compentry_func_t *)(y)))
#else
extern char ** completion_matches(const char *,rl_compentry_func_t *);
#endif
Kate Minola
University of Maryland, College Park
More information about the Python-Dev
mailing list