summaryrefslogtreecommitdiffstats
path: root/contrib/libreadline
diff options
context:
space:
mode:
authorache <ache@FreeBSD.org>2007-11-07 04:34:03 +0000
committerache <ache@FreeBSD.org>2007-11-07 04:34:03 +0000
commitc5fcccabb7d654ede15e4c933abc518d1499df09 (patch)
treeef5d9a525a93860c3b519d2084fba54a93cc9bf2 /contrib/libreadline
parent6700ec85203c54a01eaf25052a5c858bd4c4d940 (diff)
parent0aedaa860df7bc4c0789b1dc5b70733290da0367 (diff)
downloadFreeBSD-src-c5fcccabb7d654ede15e4c933abc518d1499df09.zip
FreeBSD-src-c5fcccabb7d654ede15e4c933abc518d1499df09.tar.gz
This commit was generated by cvs2svn to compensate for changes in r173403,
which included commits to RCS files with non-trunk default branches.
Diffstat (limited to 'contrib/libreadline')
-rw-r--r--contrib/libreadline/input.c26
-rw-r--r--contrib/libreadline/isearch.c11
-rw-r--r--contrib/libreadline/misc.c2
-rw-r--r--contrib/libreadline/readline.c5
-rw-r--r--contrib/libreadline/text.c9
5 files changed, 45 insertions, 8 deletions
diff --git a/contrib/libreadline/input.c b/contrib/libreadline/input.c
index da5d771..b91548e 100644
--- a/contrib/libreadline/input.c
+++ b/contrib/libreadline/input.c
@@ -133,8 +133,11 @@ rl_get_char (key)
return (0);
*key = ibuffer[pop_index++];
-
+#if 0
if (pop_index >= ibuffer_len)
+#else
+ if (pop_index > ibuffer_len)
+#endif
pop_index = 0;
return (1);
@@ -250,7 +253,8 @@ rl_gather_tyi ()
while (chars_avail--)
{
k = (*rl_getc_function) (rl_instream);
- rl_stuff_char (k);
+ if (rl_stuff_char (k) == 0)
+ break; /* some problem; no more room */
if (k == NEWLINE || k == RETURN)
break;
}
@@ -373,7 +377,11 @@ rl_stuff_char (key)
RL_SETSTATE (RL_STATE_INPUTPENDING);
}
ibuffer[push_index++] = key;
+#if 0
if (push_index >= ibuffer_len)
+#else
+ if (push_index > ibuffer_len)
+#endif
push_index = 0;
return 1;
@@ -513,20 +521,26 @@ _rl_read_mbchar (mbchar, size)
char *mbchar;
int size;
{
- int mb_len = 0;
+ int mb_len, c;
size_t mbchar_bytes_length;
wchar_t wc;
mbstate_t ps, ps_back;
memset(&ps, 0, sizeof (mbstate_t));
memset(&ps_back, 0, sizeof (mbstate_t));
-
+
+ mb_len = 0;
while (mb_len < size)
{
RL_SETSTATE(RL_STATE_MOREINPUT);
- mbchar[mb_len++] = rl_read_key ();
+ c = rl_read_key ();
RL_UNSETSTATE(RL_STATE_MOREINPUT);
+ if (c < 0)
+ break;
+
+ mbchar[mb_len++] = c;
+
mbchar_bytes_length = mbrtowc (&wc, mbchar, mb_len, &ps);
if (mbchar_bytes_length == (size_t)(-1))
break; /* invalid byte sequence for the current locale */
@@ -564,7 +578,7 @@ _rl_read_mbstring (first, mb, mlen)
c = first;
memset (mb, 0, mlen);
- for (i = 0; i < mlen; i++)
+ for (i = 0; c >= 0 && i < mlen; i++)
{
mb[i] = (char)c;
memset (&ps, 0, sizeof (mbstate_t));
diff --git a/contrib/libreadline/isearch.c b/contrib/libreadline/isearch.c
index 9f67bfc..2ed459f 100644
--- a/contrib/libreadline/isearch.c
+++ b/contrib/libreadline/isearch.c
@@ -327,8 +327,15 @@ _rl_isearch_dispatch (cxt, c)
rl_command_func_t *f;
f = (rl_command_func_t *)NULL;
-
- /* Translate the keys we do something with to opcodes. */
+
+ if (c < 0)
+ {
+ cxt->sflags |= SF_FAILED;
+ cxt->history_pos = cxt->last_found_line;
+ return -1;
+ }
+
+ /* Translate the keys we do something with to opcodes. */
if (c >= 0 && _rl_keymap[c].type == ISFUNC)
{
f = _rl_keymap[c].function;
diff --git a/contrib/libreadline/misc.c b/contrib/libreadline/misc.c
index 94ecb25..e9c72c5 100644
--- a/contrib/libreadline/misc.c
+++ b/contrib/libreadline/misc.c
@@ -146,6 +146,8 @@ _rl_arg_dispatch (cxt, c)
rl_restore_prompt ();
rl_clear_message ();
RL_UNSETSTATE(RL_STATE_NUMERICARG);
+ if (key < 0)
+ return -1;
return (_rl_dispatch (key, _rl_keymap));
}
}
diff --git a/contrib/libreadline/readline.c b/contrib/libreadline/readline.c
index c2b7400..bd4d263 100644
--- a/contrib/libreadline/readline.c
+++ b/contrib/libreadline/readline.c
@@ -645,6 +645,11 @@ _rl_dispatch_callback (cxt)
if ((cxt->flags & KSEQ_DISPATCHED) == 0)
{
nkey = _rl_subseq_getchar (cxt->okey);
+ if (nkey < 0)
+ {
+ _rl_abort_internal ();
+ return -1;
+ }
r = _rl_dispatch_subseq (nkey, cxt->dmap, cxt->subseq_arg);
cxt->flags |= KSEQ_DISPATCHED;
}
diff --git a/contrib/libreadline/text.c b/contrib/libreadline/text.c
index 399a48c..cb2f5ad 100644
--- a/contrib/libreadline/text.c
+++ b/contrib/libreadline/text.c
@@ -857,6 +857,9 @@ _rl_insert_next (count)
c = rl_read_key ();
RL_UNSETSTATE(RL_STATE_MOREINPUT);
+ if (c < 0)
+ return -1;
+
#if defined (HANDLE_SIGNALS)
if (RL_ISSTATE (RL_STATE_CALLBACK) == 0)
_rl_restore_tty_signals ();
@@ -1520,6 +1523,9 @@ _rl_char_search (count, fdir, bdir)
mb_len = _rl_read_mbchar (mbchar, MB_LEN_MAX);
+ if (mb_len <= 0)
+ return -1;
+
if (count < 0)
return (_rl_char_search_internal (-count, bdir, mbchar, mb_len));
else
@@ -1536,6 +1542,9 @@ _rl_char_search (count, fdir, bdir)
c = rl_read_key ();
RL_UNSETSTATE(RL_STATE_MOREINPUT);
+ if (c < 0)
+ return -1;
+
if (count < 0)
return (_rl_char_search_internal (-count, bdir, c));
else
OpenPOWER on IntegriCloud