55 lines
1.5 KiB
Diff
55 lines
1.5 KiB
Diff
|
From nobody Sun Dec 3 11:01:14 2006
|
|||
|
From: "H. J. Lu" <hjl@lucon.org>
|
|||
|
Subject: PATCH: PR tui/2173: Arrow keys no longer works in breakpoint command list
|
|||
|
To: GDB <gdb-patches@sources.redhat.com>
|
|||
|
Date: Tue, 21 Nov 2006 13:32:05 -0800
|
|||
|
|
|||
|
The problem is callback in readline 5.1 is changed. When gdb readline
|
|||
|
callback calls readline (), readline is really confused since although
|
|||
|
it is called from gdb callback, it isn't really in callback state. This
|
|||
|
kludge seems to work for me.
|
|||
|
|
|||
|
|
|||
|
H.J.
|
|||
|
----
|
|||
|
2006-11-21 H.J. Lu <hongjiu.lu@intel.com>
|
|||
|
|
|||
|
PR tui/2173
|
|||
|
* top.c (gdb_readline_wrapper): Unset and reset RL_STATE_CALLBACK
|
|||
|
around readline if needed.
|
|||
|
|
|||
|
--- gdb/top.c.arrow 2006-07-21 07:46:53.000000000 -0700
|
|||
|
+++ gdb/top.c 2006-11-21 13:20:04.000000000 -0800
|
|||
|
@@ -724,6 +724,9 @@ The filename in which to record the comm
|
|||
|
char *
|
|||
|
gdb_readline_wrapper (char *prompt)
|
|||
|
{
|
|||
|
+ char *line;
|
|||
|
+ int in_callback;
|
|||
|
+
|
|||
|
/* Set the hook that works in this case. */
|
|||
|
if (after_char_processing_hook)
|
|||
|
{
|
|||
|
@@ -731,7 +734,19 @@ gdb_readline_wrapper (char *prompt)
|
|||
|
after_char_processing_hook = NULL;
|
|||
|
}
|
|||
|
|
|||
|
- return readline (prompt);
|
|||
|
+ /* When we call readline, we have to make sure that readline isn't in
|
|||
|
+ the callback state. Otherwise, it will get really confused.
|
|||
|
+ PR tui/2173. */
|
|||
|
+ in_callback = RL_ISSTATE (RL_STATE_CALLBACK);
|
|||
|
+ if (in_callback)
|
|||
|
+ RL_UNSETSTATE (RL_STATE_CALLBACK);
|
|||
|
+
|
|||
|
+ line = readline (prompt);
|
|||
|
+
|
|||
|
+ if (in_callback)
|
|||
|
+ RL_SETSTATE (RL_STATE_CALLBACK);
|
|||
|
+
|
|||
|
+ return line;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|