$OpenBSD: patch-readline_readline_c,v 1.2 2004/06/07 05:58:45 david Exp $ --- readline/readline.c.orig 1995-02-24 15:20:03.000000000 -0600 +++ readline/readline.c 2004-06-06 22:06:07.000000000 -0500 @@ -610,22 +610,22 @@ rl_signal_handler (sig) rl_set_signals () { - old_int = (SigHandler *)signal (SIGINT, rl_signal_handler); + old_int = (SigHandler *)signal (SIGINT, (void *)rl_signal_handler); if (old_int == (SigHandler *)SIG_IGN) signal (SIGINT, SIG_IGN); - old_alrm = (SigHandler *)signal (SIGALRM, rl_signal_handler); + old_alrm = (SigHandler *)signal (SIGALRM, (void *)rl_signal_handler); if (old_alrm == (SigHandler *)SIG_IGN) signal (SIGALRM, SIG_IGN); #if defined (SIGTSTP) - old_tstp = (SigHandler *)signal (SIGTSTP, rl_signal_handler); + old_tstp = (SigHandler *)signal (SIGTSTP, (void *)rl_signal_handler); if (old_tstp == (SigHandler *)SIG_IGN) signal (SIGTSTP, SIG_IGN); #endif #if defined (SIGTTOU) - old_ttou = (SigHandler *)signal (SIGTTOU, rl_signal_handler); - old_ttin = (SigHandler *)signal (SIGTTIN, rl_signal_handler); + old_ttou = (SigHandler *)signal (SIGTTOU, (void *)rl_signal_handler); + old_ttin = (SigHandler *)signal (SIGTTIN, (void *)rl_signal_handler); if (old_tstp == (SigHandler *)SIG_IGN) { @@ -635,26 +635,26 @@ rl_set_signals () #endif #if defined (SIGWINCH) - old_sigwinch = (SigHandler *)signal (SIGWINCH, rl_handle_sigwinch); + old_sigwinch = (SigHandler *)signal (SIGWINCH, (void *)rl_handle_sigwinch); #endif } rl_clear_signals () { - signal (SIGINT, old_int); - signal (SIGALRM, old_alrm); + signal (SIGINT, (void *)old_int); + signal (SIGALRM, (void *)old_alrm); #if defined (SIGTSTP) - signal (SIGTSTP, old_tstp); + signal (SIGTSTP, (void *)old_tstp); #endif #if defined (SIGTTOU) - signal (SIGTTOU, old_ttou); - signal (SIGTTIN, old_ttin); + signal (SIGTTOU, (void *)old_ttou); + signal (SIGTTIN, (void *)old_ttin); #endif #if defined (SIGWINCH) - signal (SIGWINCH, old_sigwinch); + signal (SIGWINCH, (void *)old_sigwinch); #endif } #endif /* HANDLE_SIGNALS */ @@ -1700,8 +1700,14 @@ update_line (old, new, current_line) return; wsatend = 1; /* flag for trailing whitespace */ - ols = oe - 1; /* find last same */ - nls = ne - 1; + + /* find last same */ + ols = oe; + if (oe != old) + ols--; + nls = ne; + if (ne != new) + nls--; while ((*ols == *nls) && (ols > ofd) && (nls > nfd)) { if (*ols != ' ')