diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 82bde3efb7..48a46b9f93 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,14 @@ +2000-09-15 Fernando Nasser + + * varobj.c (varobj_set_value): Call wrapped version of + parse_exp_1() to avoid longjumps. + +2000-09-15 Fernando Nasser + + * 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 * ser-unix.c (do_unix_readchar): Prevent infinite read wait to be diff --git a/gdb/varobj.c b/gdb/varobj.c index 5cc6e88d16..9205e9d73e 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. */