From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: =?UTF-8?Q?=E5=B0=BE=E5=B4=8E_?= =?UTF-8?Q?=E6=88=90=E4=B8=80?= Newsgroups: gmane.emacs.bugs Subject: bug#19828: [PATCH] eval.c: couldn't make closures Date: Tue, 10 Feb 2015 16:25:02 +0900 Message-ID: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-Trace: ger.gmane.org 1423557685 31060 80.91.229.3 (10 Feb 2015 08:41:25 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 10 Feb 2015 08:41:25 +0000 (UTC) To: 19828@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Tue Feb 10 09:41:15 2015 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1YL6Nd-00010V-L6 for geb-bug-gnu-emacs@m.gmane.org; Tue, 10 Feb 2015 09:41:13 +0100 Original-Received: from localhost ([::1]:38392 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YL6Nc-0003be-Ru for geb-bug-gnu-emacs@m.gmane.org; Tue, 10 Feb 2015 03:41:12 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:50061) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YL6NY-0003aW-U1 for bug-gnu-emacs@gnu.org; Tue, 10 Feb 2015 03:41:09 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YL6NU-0003LD-U7 for bug-gnu-emacs@gnu.org; Tue, 10 Feb 2015 03:41:08 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:47635) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YL6NU-0003L9-QM for bug-gnu-emacs@gnu.org; Tue, 10 Feb 2015 03:41:04 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1YL6NU-0000y5-JM for bug-gnu-emacs@gnu.org; Tue, 10 Feb 2015 03:41:04 -0500 X-Loop: help-debbugs@gnu.org Resent-From: =?UTF-8?Q?=E5=B0=BE=E5=B4=8E_?= =?UTF-8?Q?=E6=88=90=E4=B8=80?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 10 Feb 2015 08:41:04 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 19828 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.14235576533680 (code B ref -1); Tue, 10 Feb 2015 08:41:04 +0000 Original-Received: (at submit) by debbugs.gnu.org; 10 Feb 2015 08:40:53 +0000 Original-Received: from localhost ([127.0.0.1]:38873 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YL6NI-0000xI-C4 for submit@debbugs.gnu.org; Tue, 10 Feb 2015 03:40:52 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:33166) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YL5C6-0007bV-Aj for submit@debbugs.gnu.org; Tue, 10 Feb 2015 02:25:15 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YL5C0-00051e-6M for submit@debbugs.gnu.org; Tue, 10 Feb 2015 02:25:09 -0500 Original-Received: from lists.gnu.org ([2001:4830:134:3::11]:51760) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YL5C0-00051a-4E for submit@debbugs.gnu.org; Tue, 10 Feb 2015 02:25:08 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:34878) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YL5Bz-0006np-3m for bug-gnu-emacs@gnu.org; Tue, 10 Feb 2015 02:25:08 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YL5Bv-0004rN-SH for bug-gnu-emacs@gnu.org; Tue, 10 Feb 2015 02:25:07 -0500 Original-Received: from mail-ie0-f173.google.com ([209.85.223.173]:43683) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YL5Bv-0004qV-OW for bug-gnu-emacs@gnu.org; Tue, 10 Feb 2015 02:25:03 -0500 Original-Received: by iecrp18 with SMTP id rp18so18268332iec.10 for ; Mon, 09 Feb 2015 23:25:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=b2Jhl0q2Ze/MP54CrcfMKrVBjm//WeXDvhqbQo9gW9E=; b=pMOP44Vl+oOND94MJ8jjcIAtk1D+WjsHZYai+w6JvkwHrKsMs1dwqwXTpqzDPDiw/6 7Nei4pNRaIuGCD39yrJPYiMhQAmKKc3g2PpLn9yfb78rAdUYlbxPBJYXwjmwTQjHOPwi PjjWX2hTMYz316btmu3JNXVpNPAwXzhaceVYvx9N9ZHKXN5pjqpM7CQgqHEt9B4j77uX cobT+IE56nKK4Cq3r8tK1Rgfg8/4TOB72diJhuoc7q47NnBfsCFdfIjIezmuwLr/FUod aeU3HatPfhIfz+m2wqS1JjnUOVS3zLMtGHeqp/IRPduV2Q6o3lazPWY2/gk5hccACvaB l6sA== X-Received: by 10.107.157.67 with SMTP id g64mr31172867ioe.72.1423553102837; Mon, 09 Feb 2015 23:25:02 -0800 (PST) Original-Received: by 10.64.21.231 with HTTP; Mon, 9 Feb 2015 23:25:02 -0800 (PST) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Mailman-Approved-At: Tue, 10 Feb 2015 03:40:50 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:99233 Archived-At: Hi. The following code doesn't work because doesn't create any lexical environment correctly in Emacs 24.4.1. (defvar my-ticker nil) ;; => my-ticker (let ((x 0)) (setq my-ticker (lambda () (setq x (1+ x))))) ;; => (lambda nil ;; => (setq x ;; => (1+ x))) (funcall my-ticker) ;; error--> Symbol's value as variable is void: x After fixing that, it works well. (defvar my-ticker) ;; => my-ticker (let ((x 0)) (setq my-ticker (lambda () (setq x (1+ x))))) ;; => (closure ;; => ((x . 0)) ;; => nil ;; => (setq x ;; => (1+ x))) (funcall my-ticker) ;; => 1 (funcall my-ticker) ;; => 2 Regard, Shigekazu === modified file 'src/eval.c' --- src/eval.c 2014-09-16 04:04:56 +0000 +++ src/eval.c 2015-02-10 06:48:29 +0000 @@ -875,7 +875,7 @@ val = eval_sub (Fcar (Fcdr (elt))); } - if (!NILP (lexenv) && SYMBOLP (var) + if (SYMBOLP (var) && !XSYMBOL (var)->declared_special && NILP (Fmemq (var, Vinternal_interpreter_environment))) /* Lexically bind VAR by adding it to the interpreter's binding @@ -953,7 +953,7 @@ var = SYMBOLP (elt) ? elt : Fcar (elt); tem = temps[argnum++]; - if (!NILP (lexenv) && SYMBOLP (var) + if (SYMBOLP (var) && !XSYMBOL (var)->declared_special && NILP (Fmemq (var, Vinternal_interpreter_environment))) /* Lexically bind VAR by adding it to the lexenv alist. */