On Thu, 26 Jun 2008 16:27:31 +0200, Daniel Jacobowitz wrote: > On Mon, Jun 09, 2008 at 08:14:14AM +0200, Jan Kratochvil wrote: > > @@ -5903,7 +5903,27 @@ watch_command_1 (char *arg, int accessfl > > exp_end = arg; > > exp_valid_block = innermost_block; > > mark = value_mark (); > > - fetch_watchpoint_value (exp, &val, NULL, NULL); > > + fetch_watchpoint_value (exp, &val, &val_result, NULL); > > + > > + /* VAL may be unset for unreachable final values. */ > > + while (val_result != NULL) > > + { > > + if (VALUE_LVAL (val_result) == lval_memory > > + || VALUE_LVAL (val_result) == lval_register) > > + break; > > + val_result = value_next (val_result); > > + } > > val_result is the same as val, except possibly lazy. value_next > (val_result) will always be NULL, won't it? The chain goes the other > way - next from the oldest value (*val_chain argument, or the first > value after the saved mark). Thanks, a "typo" (it should have been the 3rd argument - VAL_CHAIN). It had a regression on `watch **valpp' due to it. This bug affected your other valid objections. Thanks, Jan