# HG changeset patch # User jwe # Date 1094847846 0 # Node ID bad4898b468eed3b535fff418005e8be59bd328d # Parent fac558699d0ff75f6807b92ef4ad62169f59f7d5 [project @ 2004-09-10 20:24:05 by jwe] diff -r fac558699d0f -r bad4898b468e src/ChangeLog --- a/src/ChangeLog Fri Sep 10 15:57:13 2004 +0000 +++ b/src/ChangeLog Fri Sep 10 20:24:06 2004 +0000 @@ -1,5 +1,9 @@ 2004-09-10 John W. Eaton + * ov-builtin.cc (octave_builtin::do_multi_index_op): Use unwind + protect frame instead of a single unwind_protect::run. + * ov-mapper.cc (octave_mapper::do_multi_index_op): Likewise. + * data.cc (fill_matrix, identity_matrix): Also allow logical data type. diff -r fac558699d0f -r bad4898b468e src/ov-builtin.cc --- a/src/ov-builtin.cc Fri Sep 10 15:57:13 2004 +0000 +++ b/src/ov-builtin.cc Fri Sep 10 20:24:06 2004 +0000 @@ -108,6 +108,8 @@ ::error ("invalid use of colon in function argument list"); else { + unwind_protect::begin_frame ("builtin_func_eval"); + unwind_protect_ptr (curr_function); unwind_protect_ptr (curr_caller_function); @@ -116,7 +118,7 @@ retval = (*f) (args, nargout); - unwind_protect::run (); + unwind_protect::run_frame ("builtin_func_eval"); } return retval; diff -r fac558699d0f -r bad4898b468e src/ov-mapper.cc --- a/src/ov-mapper.cc Fri Sep 10 15:57:13 2004 +0000 +++ b/src/ov-mapper.cc Fri Sep 10 20:24:06 2004 +0000 @@ -287,6 +287,8 @@ { if (args(0).is_defined ()) { + unwind_protect::begin_frame ("mapper_func_eval"); + unwind_protect_ptr (curr_function); unwind_protect_ptr (curr_caller_function); @@ -295,7 +297,7 @@ retval = apply (args(0)); - unwind_protect::run (); + unwind_protect::run_frame ("mapper_func_eval"); } else ::error ("%s: argument undefined", name().c_str ()); diff -r fac558699d0f -r bad4898b468e src/ov-usr-fcn.cc --- a/src/ov-usr-fcn.cc Fri Sep 10 15:57:13 2004 +0000 +++ b/src/ov-usr-fcn.cc Fri Sep 10 20:24:06 2004 +0000 @@ -337,7 +337,7 @@ int nargin = args.length (); - unwind_protect::begin_frame ("func_eval"); + unwind_protect::begin_frame ("user_func_eval"); unwind_protect_int (call_depth); call_depth++; @@ -345,7 +345,7 @@ if (call_depth > Vmax_recursion_depth) { ::error ("max_recursion_limit exceeded"); - unwind_protect::run_frame ("func_eval"); + unwind_protect::run_frame ("user_func_eval"); return retval; } @@ -493,7 +493,7 @@ } abort: - unwind_protect::run_frame ("func_eval"); + unwind_protect::run_frame ("user_func_eval"); return retval; }