From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Chris Gregory Newsgroups: gmane.emacs.devel Subject: Re: Simplify internal_catch() Date: Wed, 28 Dec 2016 00:33:47 -0600 Message-ID: <87bmvwlfzo.fsf@gmail.com> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: blaine.gmane.org 1482906876 15564 195.159.176.226 (28 Dec 2016 06:34:36 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Wed, 28 Dec 2016 06:34:36 +0000 (UTC) Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Dec 28 07:34:30 2016 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cM7og-0002tQ-8Y for ged-emacs-devel@m.gmane.org; Wed, 28 Dec 2016 07:34:26 +0100 Original-Received: from localhost ([::1]:57931 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cM7ok-0004Lb-Qx for ged-emacs-devel@m.gmane.org; Wed, 28 Dec 2016 01:34:30 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:43340) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cM7o6-0004LS-EO for emacs-devel@gnu.org; Wed, 28 Dec 2016 01:33:51 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cM7o5-0000vz-Q0 for emacs-devel@gnu.org; Wed, 28 Dec 2016 01:33:50 -0500 Original-Received: from mail-io0-x241.google.com ([2607:f8b0:4001:c06::241]:34445) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cM7o5-0000vv-Li for emacs-devel@gnu.org; Wed, 28 Dec 2016 01:33:49 -0500 Original-Received: by mail-io0-x241.google.com with SMTP id n85so16182680ioi.1 for ; Tue, 27 Dec 2016 22:33:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:to:subject:date:message-id:mime-version; bh=vaZ0Fr3BWJa60n/+1f0hzmGsldA3LTmwI/moFjj5eLU=; b=Dksxo2VwGl5R1nv2fZy/raImdQ9SOzPRDgx4fWhyHHb+eUYFz+hzRUPGdRjmWFMX2B nUn/LKpsfLLkaB2jGkFcJ2NzEMneJg8x9j7HMAXDeLGnpxh7nN1P93hDR/1/c/Ry/Yw1 pYQ+xTdHgZYNgB+hhngq9xwTmg0dC6TDp43LzhiI7xVtvP01UevREqFCdpdoYkb88QY9 vMin7gpeDkq1tCdMxLCABuSR6jk8CLQmKNUa0mjlSZRNBMrurbjk5fczZAORIRkhQT01 /B6dG9TSSxKiJc3Pk+kxU9qHT2U7riSVB9+9d6vAqNUC33Uaw9tf3em4admyhbb/jOpL fe3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:to:subject:date:message-id:mime-version; bh=vaZ0Fr3BWJa60n/+1f0hzmGsldA3LTmwI/moFjj5eLU=; b=ZjQuEOt0oJX6pLhO1eHQ+xuvM9iq3ANvJKCWGeLT68psfwOPzj8xlI/twuIF0wUp6l 1uNoFJSvbJDm6iaGh/EY9S2Da56jjyqq62qnQ0aJZKEmhK3LITXItU/t4Xeqeb5iB246 hUgfIBzHmDr6rTJwbDleqtXJngNyXuEnDvFU8hQ842+h07QU7EzsQA8UdZmSmKm2xxiO 4A/SzP9QBTLzkosi6ote1nNftleyFjSKR9JPAIjqwNzog17NyFjE7GecToN4aNo+dyPy Mb9hqT4HZW5/5TGEoGnQ+zeQHWOxP/QvlLNnBoILoy09WF3bE23+eTZvUiITq3S3odxA hWpQ== X-Gm-Message-State: AIkVDXJrYFwzo5tu2ZNT3WHZjVflNCafn8lbLGVylm77dDQMllP/c6/JhUvouCYbqA+3XQ== X-Received: by 10.107.152.140 with SMTP id a134mr31763002ioe.207.1482906829042; Tue, 27 Dec 2016 22:33:49 -0800 (PST) Original-Received: from CzipperZag ([2604:2d80:8039:81de:a0b5:3d06:3bb2:d546]) by smtp.gmail.com with ESMTPSA id i200sm21790330itb.0.2016.12.27.22.33.48 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 27 Dec 2016 22:33:48 -0800 (PST) Original-To: emacs-devel@gnu.org Original-To: monnier@iro.umontreal.ca X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4001:c06::241 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:210870 Archived-At: Here is the updated patch. I replaced the if statement with a ternary operator. > Why place the declaration of `val` between the two? I'm unsure as to the style desired for Emacs source code. I've seen both used in it. I'll use the declaration initialization in the future as I also prefer that. -- Chris Gregory diff --git a/src/eval.c b/src/eval.c index e50e26a..54c09df 100644 --- a/src/eval.c +++ b/src/eval.c @@ -1084,22 +1084,16 @@ internal_catch (Lisp_Object tag, { /* This structure is made part of the chain `catchlist'. */ struct handler *c = push_handler (tag, CATCHER); - - /* Call FUNC. */ - if (! sys_setjmp (c->jmp)) - { - Lisp_Object val = func (arg); - clobbered_eassert (handlerlist == c); - handlerlist = handlerlist->next; - return val; - } - else - { /* Throw works by a longjmp that comes right here. */ - Lisp_Object val = handlerlist->val; - clobbered_eassert (handlerlist == c); - handlerlist = handlerlist->next; - return val; - } + Lisp_Object val = (sys_setjmp (c->jmp) + /* Call FUNC */ + ? func (arg) + /* Throw works by a longjmp that comes here, + setting this side */ + : handlerlist->val); + + clobbered_eassert (handlerlist == c); + handlerlist = handlerlist->next; + return val; } /* Unwind the specbind, catch, and handler stacks back to CATCH, and