diff --git a/configure.in b/configure.in index 2bf05f7d24..31018157eb 100644 --- a/configure.in +++ b/configure.in @@ -77,12 +77,12 @@ AC_CHECK_PROGS(AR, ar aal, ar) AC_PROG_LN_S AC_PROG_MAKE_SET -AC_EXEEXT -AC_OBJEXT - # checks for UNIX variants that set C preprocessor variables AC_MINIX +AC_EXEEXT +AC_OBJEXT + AC_CHECK_SIZEOF(int, 4) AC_CHECK_SIZEOF(short, 2) AC_CHECK_SIZEOF(long, 4) diff --git a/lib/debug.rb b/lib/debug.rb index a1fcde91a1..f257e0c777 100644 --- a/lib/debug.rb +++ b/lib/debug.rb @@ -25,8 +25,9 @@ class DEBUGGER__ @last_file = nil @last = [nil, nil] @scripts = {} - end @no_step = nil + @finish_pos = 0 + end DEBUG_LAST_CMD = [] @@ -255,9 +256,13 @@ class DEBUGGER__ STDOUT.printf "#%d %s\n", frame_pos, info when /^fi(?:nish)?$/ - @finish_pos = @frames.size - frame_pos - frame_pos = 0 - return + if frame_pos == 0 + STDOUT.print "\"finish\" not meaningful in the outermost frame.\n" + else + @finish_pos = @frames.size - frame_pos + frame_pos = 0 + return + end when /^q(?:uit)?$/ input = readline("really quit? (y/n) ", false) @@ -384,10 +389,10 @@ class DEBUGGER__ @frames.unshift binding when 'return', 'end' + @frames.shift if @frames.size == @finish_pos @stop_next = 1 end - @frames.shift when 'raise' excn_handle(file, line, id, binding)