Submitted By: Jim Gifford (patches at jg555 dot com) Date: 2005-12-22 Initial Package Version: 5.1 Origin: Upstream Upstream Status: Applied Description: Contains Patch 001 from Upstream 001 - A problem with the readline callback interface can result in segmentation faults when using the delete-char function via a multiple-key sequence. Two consecutive calls to delete-char will crash the application calling readline. diff -Naur readline-5.1.orig/readline.c readline-5.1/readline.c --- readline-5.1.orig/readline.c 2005-07-05 02:29:35.000000000 +0000 +++ readline-5.1/readline.c 2005-12-22 08:22:37.000000000 +0000 @@ -714,7 +714,7 @@ rl_dispatching = 1; RL_SETSTATE(RL_STATE_DISPATCHING); - r = (*map[key].function)(rl_numeric_arg * rl_arg_sign, key); + (*map[key].function)(rl_numeric_arg * rl_arg_sign, key); RL_UNSETSTATE(RL_STATE_DISPATCHING); rl_dispatching = 0; diff -Naur readline-5.1.orig/text.c readline-5.1/text.c --- readline-5.1.orig/text.c 2005-09-24 23:06:07.000000000 +0000 +++ readline-5.1/text.c 2005-12-22 08:22:37.000000000 +0000 @@ -1071,8 +1071,6 @@ rl_delete (count, key) int count, key; { - int r; - if (count < 0) return (_rl_rubout_char (-count, key)); @@ -1090,17 +1088,17 @@ else rl_forward_byte (count, key); - r = rl_kill_text (orig_point, rl_point); + rl_kill_text (orig_point, rl_point); rl_point = orig_point; - return r; } else { int new_point; new_point = MB_NEXTCHAR (rl_line_buffer, rl_point, 1, MB_FIND_NONZERO); - return (rl_delete_text (rl_point, new_point)); + rl_delete_text (rl_point, new_point); } + return 0; } /* Delete the character under the cursor, unless the insertion