From bb788f9f3b8c22489a5dc5659a935e272b0e9b64 Mon Sep 17 00:00:00 2001 From: fche Date: Wed, 24 Aug 2005 17:01:52 +0000 Subject: 2005-08-24 Frank Ch. Eigler * tapsets.cxx (*::emit_probe_entries): Treat NULL and "" last_errors both as clean early returns, not errors. * translate.cxx: Revamp last_error handling logic. Remove all "goto out" paths from expression context. (visit_statement): Handle last_error exit one nesting level at a time. (visit_return_statement, visit_functioncall): Set/reset last_error="". (c_tmpcounter::visit_for_loop): New routine. (c_unparser::visit_foreach, visit_for_loop): Rewrite to properly support continue/breaks, non-local exits, (foreach) locks. (emit_global): Emit lock variable. (varlock ctor, dtor): Lock/unlock global variable. (varlock_w, varlock_r): New concrete subclasses. Update all users. * tapset/builtin_logging.stp (exit): Don't set last_error. * src/testsuite/buildok/sixteen.stp: New test. * tapsets.cxx: Temporarily rolled back graydon's changes. --- tapset/builtin_logging.stp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'tapset/builtin_logging.stp') diff --git a/tapset/builtin_logging.stp b/tapset/builtin_logging.stp index bf01a0fc..b1948877 100644 --- a/tapset/builtin_logging.stp +++ b/tapset/builtin_logging.stp @@ -24,9 +24,8 @@ function warn (msg) { _warn (msg . "") } +// NB: exit() does *not* cause immediate return from current function/probe function exit () %{ - /* not a NULL pointer, but don't cause _stp_error */ - CONTEXT->last_error = ""; _stp_exit (); %} -- cgit