From unknown Mon Aug 18 11:32:01 2025 X-Loop: help-debbugs@gnu.org Subject: bug#19434: 24.4; cl-subseq bounding issues Resent-From: Leo Liu Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 24 Dec 2014 04:15:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 19434 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 19434@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.141939448429408 (code B ref -1); Wed, 24 Dec 2014 04:15:02 +0000 Received: (at submit) by debbugs.gnu.org; 24 Dec 2014 04:14:44 +0000 Received: from localhost ([127.0.0.1]:56073 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Y3dLP-0007eF-H6 for submit@debbugs.gnu.org; Tue, 23 Dec 2014 23:14:43 -0500 Received: from eggs.gnu.org ([208.118.235.92]:53627) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Y3dLN-0007e7-DH for submit@debbugs.gnu.org; Tue, 23 Dec 2014 23:14:41 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Y3dLL-0001of-UX for submit@debbugs.gnu.org; Tue, 23 Dec 2014 23:14:40 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=BAYES_20,FREEMAIL_FROM, T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:45396) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y3dLL-0001ob-Rb for submit@debbugs.gnu.org; Tue, 23 Dec 2014 23:14:39 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55343) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y3dLK-0003ni-QV for bug-gnu-emacs@gnu.org; Tue, 23 Dec 2014 23:14:39 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Y3dLF-0001nK-Q4 for bug-gnu-emacs@gnu.org; Tue, 23 Dec 2014 23:14:38 -0500 Received: from mail-pa0-x22b.google.com ([2607:f8b0:400e:c03::22b]:43616) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y3dLF-0001n7-Id for bug-gnu-emacs@gnu.org; Tue, 23 Dec 2014 23:14:33 -0500 Received: by mail-pa0-f43.google.com with SMTP id kx10so9291755pab.30 for ; Tue, 23 Dec 2014 20:14:32 -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:content-type; bh=vneLeDexmakxiU01TXv63er6csbQ14XDSabr0p0mr9s=; b=pROr3AbmmXQVZlxkwkcCOjY9oQZZAAiZYR6thB/5IlQ+DZRY+Z02ycA4xZpFyAsBJT q/rjcxxTEN5snhCJBZXCyFjmkEMyBWM5zIeg1rzBog+uBKbrXhU4UPYsHQiOfKeuZ0Gi a2LEy0jvUoKDytLBEboHZYxe7Gyucs1MmyHNztazE2nfMz/l9uo8s4LnnyYIr1gHpP2d bi9Eu6sBrWdl2jIXDFcotObDwzoGxJ79izCrb8hNEDG5m0RcW9vsjUajET0YVqzSg3CD UXrTzO+7BHisivBO9tPUzbQeLAHl5APKqKn7DQHo28+UG8nWR+7QBIDu0s29LeM0pAGT mvRw== X-Received: by 10.68.57.225 with SMTP id l1mr49264335pbq.87.1419394471782; Tue, 23 Dec 2014 20:14:31 -0800 (PST) Received: from Shidais-iMac.local ([128.199.230.246]) by mx.google.com with ESMTPSA id ji5sm5529315pbd.22.2014.12.23.20.14.29 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 23 Dec 2014 20:14:31 -0800 (PST) From: Leo Liu Date: Wed, 24 Dec 2014 12:14:22 +0800 Message-ID: MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.0 (----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -4.0 (----) At the moment (cl-subseq '(1 2 3) 0 5) => (1 2 3 nil nil) I propose the following fix: diff --git a/lisp/emacs-lisp/cl-extra.el b/lisp/emacs-lisp/cl-extra.el index a94dcd33..b50c1e6a 100644 --- a/lisp/emacs-lisp/cl-extra.el +++ b/lisp/emacs-lisp/cl-extra.el @@ -524,15 +524,21 @@ (defun cl-subseq (seq start &optional end) `(progn (cl-replace ,seq ,new :start1 ,start :end1 ,end) ,new)))) (if (stringp seq) (substring seq start end) - (let (len) + (let ((orig-start start) (orig-end end) len) (and end (< end 0) (setq end (+ end (setq len (length seq))))) (if (< start 0) (setq start (+ start (or len (setq len (length seq)))))) (cond ((listp seq) - (if (> start 0) (setq seq (nthcdr start seq))) + (when (> start 0) + (setq seq (nthcdr (1- start) seq)) + (or seq + (error "Bad bounding indices: %s, %s" orig-start orig-end)) + (setq seq (cdr seq))) (if end (let ((res nil)) - (while (>= (setq end (1- end)) start) + (while (and seq (>= (setq end (1- end)) start)) (push (pop seq) res)) + (or (= start end) + (error "Bad bounding indices: %s, %s" orig-start orig-end)) (nreverse res)) (copy-sequence seq))) (t diff --git a/test/automated/cl-lib-tests.el b/test/automated/cl-lib-tests.el index e4c6e914..162f7aeb 100644 --- a/test/automated/cl-lib-tests.el +++ b/test/automated/cl-lib-tests.el @@ -245,4 +245,10 @@ (ert-deftest cl-parse-integer () (ert-deftest cl-loop-destructuring-with () (should (equal (cl-loop with (a b c) = '(1 2 3) return (+ a b c)) 6))) +(ert-deftest cl-subseq () + (should-error (cl-subseq '(1 2 3) 4)) + (should-not (cl-subseq '(1 2 3) 3)) + (should (cl-subseq '(1 2 3) -3)) + (should-error (cl-subseq '(1 2 3) 1 4))) + ;;; cl-lib.el ends here From unknown Mon Aug 18 11:32:01 2025 X-Loop: help-debbugs@gnu.org Subject: bug#19434: 24.4; cl-subseq bounding issues Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 01 Jan 2015 16:14:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 19434 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Leo Liu Cc: 19434@debbugs.gnu.org Received: via spool by 19434-submit@debbugs.gnu.org id=B19434.14201288149020 (code B ref 19434); Thu, 01 Jan 2015 16:14:01 +0000 Received: (at 19434) by debbugs.gnu.org; 1 Jan 2015 16:13:34 +0000 Received: from localhost ([127.0.0.1]:34570 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Y6iNS-0002LP-CF for submit@debbugs.gnu.org; Thu, 01 Jan 2015 11:13:34 -0500 Received: from pruche.dit.umontreal.ca ([132.204.246.22]:34995) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Y6iNP-0002LH-Vp for 19434@debbugs.gnu.org; Thu, 01 Jan 2015 11:13:32 -0500 Received: from fmsmemgm.homelinux.net (lechon.iro.umontreal.ca [132.204.27.242]) by pruche.dit.umontreal.ca (8.14.1/8.14.1) with ESMTP id t01GDUJY012768; Thu, 1 Jan 2015 11:13:30 -0500 Received: by fmsmemgm.homelinux.net (Postfix, from userid 20848) id C5109AE130; Thu, 1 Jan 2015 11:13:29 -0500 (EST) From: Stefan Monnier Message-ID: References: Date: Thu, 01 Jan 2015 11:13:29 -0500 In-Reply-To: (Leo Liu's message of "Wed, 24 Dec 2014 12:14:22 +0800") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-NAI-Spam-Flag: NO X-NAI-Spam-Level: X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0.2 X-NAI-Spam-Rules: 2 Rules triggered GEN_SPAM_FEATRE=0.2, RV5173=0 X-NAI-Spam-Version: 2.3.0.9393 : core <5173> : inlines <1719> : streams <1366493> : uri <1840834> X-Spam-Score: -1.3 (-) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.3 (-) > At the moment (cl-subseq '(1 2 3) 0 5) => (1 2 3 nil nil) > I propose the following fix: Fine by me. Can you check if seq-subseq (in seq.el) needs a similar fix? And/or if cl-subseq can make use of seq-subseq? Stefan From unknown Mon Aug 18 11:32:01 2025 X-Loop: help-debbugs@gnu.org Subject: bug#19434: 24.4; cl-subseq bounding issues Resent-From: Leo Liu Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 04 Jan 2015 23:06:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 19434 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Stefan Monnier Cc: 19434@debbugs.gnu.org Received: via spool by 19434-submit@debbugs.gnu.org id=B19434.142041275211934 (code B ref 19434); Sun, 04 Jan 2015 23:06:02 +0000 Received: (at 19434) by debbugs.gnu.org; 4 Jan 2015 23:05:52 +0000 Received: from localhost ([127.0.0.1]:36754 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Y7uF6-00036Q-3E for submit@debbugs.gnu.org; Sun, 04 Jan 2015 18:05:52 -0500 Received: from mail-pa0-f52.google.com ([209.85.220.52]:44134) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Y7uF4-00036I-Fk for 19434@debbugs.gnu.org; Sun, 04 Jan 2015 18:05:50 -0500 Received: by mail-pa0-f52.google.com with SMTP id eu11so27486446pac.39 for <19434@debbugs.gnu.org>; Sun, 04 Jan 2015 15:05:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:references:face:date:in-reply-to:message-id :user-agent:mime-version:content-type; bh=rYWS0uMLNEPqtSlkVHUSWc5ZodlkFxHoHU9MG8kdd+U=; b=Z+75vTSqFQGyGCM7M825F2N6o9qd684mQxcRrg0nx+PeXGh2mZCYjpE6DIpeTI6ppT zHPoliCxU1QXDGW0hqpC9ySMKWovD7Rll2dGSas66dCFthwuFmHecK9mpHqo+09hYwa6 YLhxozKFgUkyn/4CU0+cq5//TydQPNmQTmPvpdKvgfvn6UAPcppygy/gdRAF0o+N5+Of 5Eh17Zi6skiOV+2Poke8uevhqiZTfO8mPizfIvmyKkxUMQtWkHkbHHi4Zro9ukvuO5sC S5EmspWqwgZJ+RIe/jpjil4bDRu3GRsB87PDctOh2qKTj7WCs9ki+4RyvfzGPd8+MJXn 299A== X-Received: by 10.66.121.230 with SMTP id ln6mr141343588pab.82.1420412749898; Sun, 04 Jan 2015 15:05:49 -0800 (PST) Received: from Zeuss-MacBook.local (ppp108-100.static.internode.on.net. [150.101.108.100]) by mx.google.com with ESMTPSA id r1sm45500832pdb.24.2015.01.04.15.05.47 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 04 Jan 2015 15:05:49 -0800 (PST) From: Leo Liu References: Face: iVBORw0KGgoAAAANSUhEUgAAACgAAAAoBAMAAAB+0KVeAAAAMFBMVEUaFRZLMy1dTENxVzKQ WiCrXQ97cmO/dSqSh3akjGTApXy5sJ7Sxo/Sz8Xo6eP9//xJbkruAAAAAWJLR0QAiAUdSAAAAAlw SFlzAAACxQAAAsUBidZ/7wAAAAd0SU1FB9cBBwMJOwHXewoAAAIBSURBVCjPVdNBiNNAFADQ6J4F x3hThHZBBC+WCFI8SS0iezRDcMHLHkLAg6gJH/fgYQ9xYlj2sLK4KHgqCgXFhda2Idmr4kkQPZQ0 nkQMbTypbMmMM2m7ZgYSmMef/5OZPwo7HFnx3uKPcmj0Dht1LWZJ+Hvr7dIFZXRUwl9VRTuuKDJ+ U44gjscknK4hhJaCkYRsWjmBtLqXlJAG2wipNe18OZJu1BBq1E8xafl4s6Jq2mUZGftU1y7CCxnp FVUDWJXx4C66BKBnErbuoaYNtoRTu6EZBsCbMn7W+5qOAR6WvxNOby9jHWC9hAf3n304CdiAByXs 3Nh9roLDkyb/sWV712vYwaLSAn8CPMHIAAzOPDKP2COAFm4Y4ODVWc6xG7KXsN7UeUJjjimx2uwd gCgNhr0i8C/xyCD5CiCKAMY3Bf5oDzx//w/fimscdcAZU2jv9sedx6+nYPPFIoWI/GK6QZ+EFGOR ErAjCnV3vPZ7XqlTIMbOLY7fLcvvmT7rXNWaGDexIY44N12TG2PDp7vqyl57dnCeuWwyNpnEURxk fTbDYeBnKRn4oejPYI4sH6WviBumEZ/GxX4X/x6EcURFZ7E071bjQGAxpcOAEOJuTiroDEea5Szv rVWLYfl7ZiQwSUToxrkux7OLixAWGz22+HIyWTRYcVfomOwvzusfjtVIGgLHf3MAAAAASUVORK5C YII= Date: Mon, 05 Jan 2015 10:05:42 +1100 In-Reply-To: (Stefan Monnier's message of "Thu, 01 Jan 2015 11:13:29 -0500") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4 (OS X 10.10.1) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) On 2015-01-02 03:13 +1100, Stefan Monnier wrote: > Fine by me. Can you check if seq-subseq (in seq.el) needs a similar fix? > And/or if cl-subseq can make use of seq-subseq? I am on the road but I'll take care of this soonish. Leo From unknown Mon Aug 18 11:32:01 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.503 (Entity 5.503) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Leo Liu Subject: bug#19434: closed (Re: bug#19434: 24.4; cl-subseq bounding issues) Message-ID: References: X-Gnu-PR-Message: they-closed 19434 X-Gnu-PR-Package: emacs Reply-To: 19434@debbugs.gnu.org Date: Sun, 18 Jan 2015 06:22:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1421562122-15085-1" This is a multi-part message in MIME format... ------------=_1421562122-15085-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #19434: 24.4; cl-subseq bounding issues which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 19434@debbugs.gnu.org. --=20 19434: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D19434 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1421562122-15085-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 19434-done) by debbugs.gnu.org; 18 Jan 2015 06:21:25 +0000 Received: from localhost ([127.0.0.1]:60449 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YCjEj-0003u9-CZ for submit@debbugs.gnu.org; Sun, 18 Jan 2015 01:21:25 -0500 Received: from mail-pa0-f47.google.com ([209.85.220.47]:40314) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YCjEh-0003tw-Ba for 19434-done@debbugs.gnu.org; Sun, 18 Jan 2015 01:21:23 -0500 Received: by mail-pa0-f47.google.com with SMTP id kq14so32254774pab.6 for <19434-done@debbugs.gnu.org>; Sat, 17 Jan 2015 22:21:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:references:face:date:in-reply-to:message-id :user-agent:mime-version:content-type; bh=QfWmHF5VCFZOnuIgvSVMqYAzt5T0ipnMws+ZcYQGl8Y=; b=TaCnpNGun7ZO6LgjbNJh9hMSvHg+hMt9qVBkMt5xUXSO3zNCdwdGZasfv1MzQEuXax 6tCI3aFbsgTx6brBc32B1M6qQlAHlz9Gy0uJAeJQvz6hS5g2Qm7b0ODPcsjS8s+krnVp YAZ18UdiQlCHuORjCUdZEX3309qh80Im/VxfIzsocbCm/95uuly8+Vuuvrltqtd8Jqjm 59wxZuvBuh4Fh79f56fvyvcqQMm37w/fiN/Rwrt0dxuTzjDJWJfTGFsKAiZAagw2bvDU cAJjn1k7CsO/rMKpimOxfwIcJrqo6wjO7iwHqTRT0gZCe8D7ODL1mxLszNARqur0gXwG 3s1g== X-Received: by 10.68.222.40 with SMTP id qj8mr34815965pbc.51.1421562077183; Sat, 17 Jan 2015 22:21:17 -0800 (PST) Received: from Shidais-iMac.lan ([128.199.230.246]) by mx.google.com with ESMTPSA id ob4sm8189816pdb.48.2015.01.17.22.21.14 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 17 Jan 2015 22:21:16 -0800 (PST) From: Leo Liu To: 19434-done@debbugs.gnu.org Subject: Re: bug#19434: 24.4; cl-subseq bounding issues References: Face: iVBORw0KGgoAAAANSUhEUgAAACgAAAAoBAMAAAB+0KVeAAAAMFBMVEUaFRZLMy1dTENxVzKQ WiCrXQ97cmO/dSqSh3akjGTApXy5sJ7Sxo/Sz8Xo6eP9//xJbkruAAAAAWJLR0QAiAUdSAAAAAlw SFlzAAACxQAAAsUBidZ/7wAAAAd0SU1FB9cBBwMJOwHXewoAAAIBSURBVCjPVdNBiNNAFADQ6J4F x3hThHZBBC+WCFI8SS0iezRDcMHLHkLAg6gJH/fgYQ9xYlj2sLK4KHgqCgXFhda2Idmr4kkQPZQ0 nkQMbTypbMmMM2m7ZgYSmMef/5OZPwo7HFnx3uKPcmj0Dht1LWZJ+Hvr7dIFZXRUwl9VRTuuKDJ+ U44gjscknK4hhJaCkYRsWjmBtLqXlJAG2wipNe18OZJu1BBq1E8xafl4s6Jq2mUZGftU1y7CCxnp FVUDWJXx4C66BKBnErbuoaYNtoRTu6EZBsCbMn7W+5qOAR6WvxNOby9jHWC9hAf3n304CdiAByXs 3Nh9roLDkyb/sWV712vYwaLSAn8CPMHIAAzOPDKP2COAFm4Y4ODVWc6xG7KXsN7UeUJjjimx2uwd gCgNhr0i8C/xyCD5CiCKAMY3Bf5oDzx//w/fimscdcAZU2jv9sedx6+nYPPFIoWI/GK6QZ+EFGOR ErAjCnV3vPZ7XqlTIMbOLY7fLcvvmT7rXNWaGDexIY44N12TG2PDp7vqyl57dnCeuWwyNpnEURxk fTbDYeBnKRn4oejPYI4sH6WviBumEZ/GxX4X/x6EcURFZ7E071bjQGAxpcOAEOJuTiroDEea5Szv rVWLYfl7ZiQwSUToxrkux7OLixAWGz22+HIyWTRYcVfomOwvzusfjtVIGgLHf3MAAAAASUVORK5C YII= Date: Sun, 18 Jan 2015 14:21:08 +0800 In-Reply-To: (Leo Liu's message of "Mon, 05 Jan 2015 10:05:42 +1100") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4 (OS X 10.10.1) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 19434-done Cc: Stefan Monnier X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) Version: 25.1 ------------=_1421562122-15085-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 24 Dec 2014 04:14:44 +0000 Received: from localhost ([127.0.0.1]:56073 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Y3dLP-0007eF-H6 for submit@debbugs.gnu.org; Tue, 23 Dec 2014 23:14:43 -0500 Received: from eggs.gnu.org ([208.118.235.92]:53627) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Y3dLN-0007e7-DH for submit@debbugs.gnu.org; Tue, 23 Dec 2014 23:14:41 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Y3dLL-0001of-UX for submit@debbugs.gnu.org; Tue, 23 Dec 2014 23:14:40 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=BAYES_20,FREEMAIL_FROM, T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:45396) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y3dLL-0001ob-Rb for submit@debbugs.gnu.org; Tue, 23 Dec 2014 23:14:39 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55343) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y3dLK-0003ni-QV for bug-gnu-emacs@gnu.org; Tue, 23 Dec 2014 23:14:39 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Y3dLF-0001nK-Q4 for bug-gnu-emacs@gnu.org; Tue, 23 Dec 2014 23:14:38 -0500 Received: from mail-pa0-x22b.google.com ([2607:f8b0:400e:c03::22b]:43616) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y3dLF-0001n7-Id for bug-gnu-emacs@gnu.org; Tue, 23 Dec 2014 23:14:33 -0500 Received: by mail-pa0-f43.google.com with SMTP id kx10so9291755pab.30 for ; Tue, 23 Dec 2014 20:14:32 -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:content-type; bh=vneLeDexmakxiU01TXv63er6csbQ14XDSabr0p0mr9s=; b=pROr3AbmmXQVZlxkwkcCOjY9oQZZAAiZYR6thB/5IlQ+DZRY+Z02ycA4xZpFyAsBJT q/rjcxxTEN5snhCJBZXCyFjmkEMyBWM5zIeg1rzBog+uBKbrXhU4UPYsHQiOfKeuZ0Gi a2LEy0jvUoKDytLBEboHZYxe7Gyucs1MmyHNztazE2nfMz/l9uo8s4LnnyYIr1gHpP2d bi9Eu6sBrWdl2jIXDFcotObDwzoGxJ79izCrb8hNEDG5m0RcW9vsjUajET0YVqzSg3CD UXrTzO+7BHisivBO9tPUzbQeLAHl5APKqKn7DQHo28+UG8nWR+7QBIDu0s29LeM0pAGT mvRw== X-Received: by 10.68.57.225 with SMTP id l1mr49264335pbq.87.1419394471782; Tue, 23 Dec 2014 20:14:31 -0800 (PST) Received: from Shidais-iMac.local ([128.199.230.246]) by mx.google.com with ESMTPSA id ji5sm5529315pbd.22.2014.12.23.20.14.29 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 23 Dec 2014 20:14:31 -0800 (PST) From: Leo Liu To: bug-gnu-emacs@gnu.org Subject: 24.4; cl-subseq bounding issues X-Debbugs-CC: Date: Wed, 24 Dec 2014 12:14:22 +0800 Message-ID: MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.0 (----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -4.0 (----) At the moment (cl-subseq '(1 2 3) 0 5) => (1 2 3 nil nil) I propose the following fix: diff --git a/lisp/emacs-lisp/cl-extra.el b/lisp/emacs-lisp/cl-extra.el index a94dcd33..b50c1e6a 100644 --- a/lisp/emacs-lisp/cl-extra.el +++ b/lisp/emacs-lisp/cl-extra.el @@ -524,15 +524,21 @@ (defun cl-subseq (seq start &optional end) `(progn (cl-replace ,seq ,new :start1 ,start :end1 ,end) ,new)))) (if (stringp seq) (substring seq start end) - (let (len) + (let ((orig-start start) (orig-end end) len) (and end (< end 0) (setq end (+ end (setq len (length seq))))) (if (< start 0) (setq start (+ start (or len (setq len (length seq)))))) (cond ((listp seq) - (if (> start 0) (setq seq (nthcdr start seq))) + (when (> start 0) + (setq seq (nthcdr (1- start) seq)) + (or seq + (error "Bad bounding indices: %s, %s" orig-start orig-end)) + (setq seq (cdr seq))) (if end (let ((res nil)) - (while (>= (setq end (1- end)) start) + (while (and seq (>= (setq end (1- end)) start)) (push (pop seq) res)) + (or (= start end) + (error "Bad bounding indices: %s, %s" orig-start orig-end)) (nreverse res)) (copy-sequence seq))) (t diff --git a/test/automated/cl-lib-tests.el b/test/automated/cl-lib-tests.el index e4c6e914..162f7aeb 100644 --- a/test/automated/cl-lib-tests.el +++ b/test/automated/cl-lib-tests.el @@ -245,4 +245,10 @@ (ert-deftest cl-parse-integer () (ert-deftest cl-loop-destructuring-with () (should (equal (cl-loop with (a b c) = '(1 2 3) return (+ a b c)) 6))) +(ert-deftest cl-subseq () + (should-error (cl-subseq '(1 2 3) 4)) + (should-not (cl-subseq '(1 2 3) 3)) + (should (cl-subseq '(1 2 3) -3)) + (should-error (cl-subseq '(1 2 3) 1 4))) + ;;; cl-lib.el ends here ------------=_1421562122-15085-1--