diff options
-rw-r--r-- | gdb/ChangeLog | 11 | ||||
-rw-r--r-- | gdb/varobj.c | 5 |
2 files changed, 14 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 82bde3e..48a46b9 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,14 @@ +2000-09-15 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * varobj.c (varobj_set_value): Call wrapped version of + parse_exp_1() to avoid longjumps. + +2000-09-15 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * remote.c (putpkt_binary): Call read_frame, not getpkt. Log message. + (read_frame): Do not call error() on communication error when + reading checksum, but return failure instead and log message. + 2000-09-15 Fernando Nasser <fnasser@cygnus.com> * ser-unix.c (do_unix_readchar): Prevent infinite read wait to be diff --git a/gdb/varobj.c b/gdb/varobj.c index 5cc6e88..9205e9d 100644 --- a/gdb/varobj.c +++ b/gdb/varobj.c @@ -781,8 +781,9 @@ varobj_set_value (struct varobj *var, char *expression) value_ptr temp; input_radix = 10; /* ALWAYS reset to decimal temporarily */ - /* FIXME: Callee may longjump */ - exp = parse_exp_1 (&s, 0, 0); + if (!gdb_parse_exp_1 (&s, 0, 0, &exp)) + /* We cannot proceed without a well-formed expression. */ + return 0; if (!gdb_evaluate_expression (exp, &value)) { /* We cannot proceed without a valid expression. */ |