comparison src/toplev.cc @ 9990:2b008f1d3794

octave_call_stack::do_goto_frame_relative: stop searching at top frame
author John W. Eaton <jwe@octave.org>
date Tue, 15 Dec 2009 16:02:48 -0500
parents 692ab4eaf965
children 2cd940306a06
comparison
equal deleted inserted replaced
9989:d36f8c473dff 9990:2b008f1d3794
385 385
386 const call_stack_elt& elt = cs[frame]; 386 const call_stack_elt& elt = cs[frame];
387 387
388 octave_function *f = elt.fcn; 388 octave_function *f = elt.fcn;
389 389
390 if (f && f->is_user_code ()) 390 if (frame == 0 || (f && f->is_user_code ()))
391 { 391 {
392 if (nskip > 0) 392 if (nskip > 0)
393 nskip--; 393 nskip--;
394 else if (nskip < 0) 394 else if (nskip < 0)
395 nskip++; 395 nskip++;
401 401
402 symbol_table::set_scope_and_context (elt.scope, elt.context); 402 symbol_table::set_scope_and_context (elt.scope, elt.context);
403 403
404 if (verbose) 404 if (verbose)
405 { 405 {
406 tree_statement *s = elt.stmt; 406 std::ostringstream buf;
407 int l = -1; 407
408 int c = -1; 408 if (f)
409 if (s) 409 {
410 { 410 tree_statement *s = elt.stmt;
411 l = s->line (); 411
412 c = s->column (); 412 int l = s ? s->line () : -1;
413 } 413 int c = s ? s->column () : -1;
414 414
415 std::ostringstream buf; 415 buf << f->name () << ": " << " line " << l
416 buf << f->name () << ": " << " line " << l 416 << ", column " << c << std::endl;
417 << ", column " << c << std::endl; 417 }
418 else
419 buf << "at top level" << std::endl;
418 420
419 octave_stdout << buf.str (); 421 octave_stdout << buf.str ();
420 } 422 }
421 423
422 retval = true; 424 retval = true;