From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Tino Calancha Newsgroups: gmane.emacs.bugs Subject: bug#24997: 26.0.50; ibuffer-decompose-filter has side effects on error Date: Wed, 23 Nov 2016 16:34:32 +0900 Message-ID: <878tsa6453.fsf@gmail.com> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: blaine.gmane.org 1479886522 23278 195.159.176.226 (23 Nov 2016 07:35:22 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Wed, 23 Nov 2016 07:35:22 +0000 (UTC) To: 24997@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Nov 23 08:35:15 2016 Return-path: Envelope-to: geb-bug-gnu-emacs@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 1c9S5J-0004Lp-Gw for geb-bug-gnu-emacs@m.gmane.org; Wed, 23 Nov 2016 08:35:13 +0100 Original-Received: from localhost ([::1]:60062 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1c9S5L-0001LS-KI for geb-bug-gnu-emacs@m.gmane.org; Wed, 23 Nov 2016 02:35:15 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:44873) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1c9S5E-0001I6-LS for bug-gnu-emacs@gnu.org; Wed, 23 Nov 2016 02:35:09 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1c9S58-0004HM-9J for bug-gnu-emacs@gnu.org; Wed, 23 Nov 2016 02:35:08 -0500 Original-Received: from debbugs.gnu.org ([208.118.235.43]:51669) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1c9S58-0004HF-6l for bug-gnu-emacs@gnu.org; Wed, 23 Nov 2016 02:35:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1c9S58-00011P-1C for bug-gnu-emacs@gnu.org; Wed, 23 Nov 2016 02:35:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Tino Calancha Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 23 Nov 2016 07:35:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 24997 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.14798864963907 (code B ref -1); Wed, 23 Nov 2016 07:35:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 23 Nov 2016 07:34:56 +0000 Original-Received: from localhost ([127.0.0.1]:38835 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c9S51-00010x-S5 for submit@debbugs.gnu.org; Wed, 23 Nov 2016 02:34:56 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:53833) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c9S50-00010h-24 for submit@debbugs.gnu.org; Wed, 23 Nov 2016 02:34:54 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1c9S4t-00048u-Li for submit@debbugs.gnu.org; Wed, 23 Nov 2016 02:34:48 -0500 Original-Received: from lists.gnu.org ([2001:4830:134:3::11]:44592) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1c9S4t-00048o-Ie for submit@debbugs.gnu.org; Wed, 23 Nov 2016 02:34:47 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:44800) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1c9S4s-0001Ev-9y for bug-gnu-emacs@gnu.org; Wed, 23 Nov 2016 02:34:47 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1c9S4n-000469-2o for bug-gnu-emacs@gnu.org; Wed, 23 Nov 2016 02:34:44 -0500 Original-Received: from mail-pg0-x241.google.com ([2607:f8b0:400e:c05::241]:34023) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1c9S4m-00045K-TE for bug-gnu-emacs@gnu.org; Wed, 23 Nov 2016 02:34:41 -0500 Original-Received: by mail-pg0-x241.google.com with SMTP id e9so490357pgc.1 for ; Tue, 22 Nov 2016 23:34:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:date:message-id:mime-version; bh=WVGjxt7cdkUi8r5xgO/XXbZIP8ZuJrMr39tWtx0NXn4=; b=lqhpkj8F+EXjL486YfGaBr+V0AmauS0dB9x7WNLsHIEJOUl2LFAhnGUm3Ae+ylBlVo 5oXl047wHRjFILKAAm9Q2kaU1declicuqNbvfDJwvmdsI40AmNmGf7cRIEEELvAAealz xh7lgSmbE++9LWc4hWN8178gEUCmkNu4NQnCb22LhJCa4wpqo+xNWMovSkm2BsFwQCq2 uLczDmkJ7k9Ew3MidyHrW/ZpIndG1nGaZoUpaTgMlocSEC0N6+dTDvELZ/uurIkYWeX6 F5Y1dAuW11bg8LUQomcnA19SW2mQbHuwq9xog/NcouyRJgipBuiRX9hc3BRcZOTrBc0m 6dCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:subject:date:message-id:mime-version; bh=WVGjxt7cdkUi8r5xgO/XXbZIP8ZuJrMr39tWtx0NXn4=; b=gt3zacHkiYc+Yv2ZiBwGe5RvwP4y1/Ny7v67O5yCWIw/di5Kzl3utOimdC0VKMDarl aRYqDFLtKWwHm+tMEsFirIStl0l4G8EhkKRdx+bIO4NamVLlwN/R8ZvYWFQUs7iPYCps ndo2DqdwwwKzdDSoyB1+sASqyqLMNSKZL/katge/kqoTc6FFHYuIaxloldX0JgO7YoUs pDaySoApuxAeUqxldvHH27RP6quMBGMWzVhzv/9M/Q80UCd7WLMBRXYNpK8aEQNAS/4O O17+XOP2aSew88yIhxJh37TqeOBfHJuGbuTMpEYSfcinFr3Cy3ejYDVj701WIDc9jfUZ vfpQ== X-Gm-Message-State: AKaTC03YL8HuamM4Up7Y1e5WQgnKoAAardimnLuUpEZtmSq+XHfbBfI8H/TOVQ5Bj9pVIg== X-Received: by 10.98.86.157 with SMTP id h29mr1634942pfj.25.1479886477353; Tue, 22 Nov 2016 23:34:37 -0800 (PST) Original-Received: from calancha-pc (57.92.100.220.dy.bbexcite.jp. [220.100.92.57]) by smtp.gmail.com with ESMTPSA id b12sm47800759pfb.78.2016.11.22.23.34.36 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 22 Nov 2016 23:34:36 -0800 (PST) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.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" Xref: news.gmane.org gmane.emacs.bugs:126005 Archived-At: M-x ibuffer RET / m lisp-interaction-mode RET / > 10 RET ;; here `ibuffer-filtering-qualifiers' has value: ;; ((size-gt . 10) (used-mode . lisp-interaction-mode)) / d ;; Signals error: ibuffer-decompose-filter: Filter type size-gt is not compound Note that previous command has side effects on `ibuffer-filtering-qualifiers' even when there is an error; after this command the var has value: ((used-mode . lisp-interaction-mode)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; >From 4540c12df119e247b5eb0a33c216375a43421e62 Mon Sep 17 00:00:00 2001 From: Tino Calancha Date: Wed, 23 Nov 2016 16:28:49 +0900 Subject: [PATCH] ibuffer-decompose-filter: Avoid side effects on error * lisp/ibuf-ext.el (ibuffer-decompose-filter): Update 'ibuffer-filtering-qualifiers' only if there is no error (Bug#24997). --- lisp/ibuf-ext.el | 39 +++++++++++++++++---------------------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el index 5ef0746..3d11972 100644 --- a/lisp/ibuf-ext.el +++ b/lisp/ibuf-ext.el @@ -840,29 +840,24 @@ ibuffer-decompose-filter be a complex filter like (OR [name: foo] [mode: bar-mode]), will be turned into two separate filters [name: foo] and [mode: bar-mode]." (interactive) - (when (null ibuffer-filtering-qualifiers) + (unless ibuffer-filtering-qualifiers (error "No filters in effect")) - (let ((lim (pop ibuffer-filtering-qualifiers))) - (pcase (car lim) - (`or - (setq ibuffer-filtering-qualifiers (append - (cdr lim) - ibuffer-filtering-qualifiers))) - (`saved - (let ((data - (assoc (cdr lim) - ibuffer-saved-filters))) - (unless data - (ibuffer-filter-disable) - (error "Unknown saved filter %s" (cdr lim))) - (setq ibuffer-filtering-qualifiers (append - (cadr data) - ibuffer-filtering-qualifiers)))) - (`not - (push (cdr lim) - ibuffer-filtering-qualifiers)) - (_ - (error "Filter type %s is not compound" (car lim))))) + (let* ((filters ibuffer-filtering-qualifiers) + (head (cdar filters)) + (tail (cdr filters)) + (value + (pcase (caar filters) + (`or (nconc head tail)) + (`saved + (let ((data (assoc head ibuffer-saved-filters))) + (unless data + (ibuffer-filter-disable) + (error "Unknown saved filter %s" head)) + (nconc (cadr data) tail))) + (`not (cons head tail)) + (_ + (error "Filter type %s is not compound" (caar filters)))))) + (setq ibuffer-filtering-qualifiers value)) (ibuffer-update nil t)) ;;;###autoload -- 2.10.2 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; In GNU Emacs 26.0.50.5 (x86_64-pc-linux-gnu, GTK+ Version 3.22.3) of 2016-11-23 built on calancha-pc Repository revision: c542fab20f53374dd0c71dce949ef370fc76fa48