GNU bug report logs - #81305
32.0.50; [PATCH] end-of-defun off by 1 when given negative argument less than -1

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: emacs; Reported by: Filipp Gunbin <fgunbin@HIDDEN>; Keywords: patch; dated Thu, 25 Jun 2026 20:33:02 UTC; Maintainer for emacs is bug-gnu-emacs@HIDDEN.

Message received at 81305 <at> debbugs.gnu.org:


Received: (at 81305) by debbugs.gnu.org; 3 Jul 2026 06:41:36 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jul 03 02:41:35 2026
Received: from localhost ([127.0.0.1]:50028 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1wfXae-0004e8-9W
	for submit <at> debbugs.gnu.org; Fri, 03 Jul 2026 02:41:35 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:36714)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1wfXaZ-0004cu-PZ
 for 81305 <at> debbugs.gnu.org; Fri, 03 Jul 2026 02:41:30 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1wfXaU-0002xw-98; Fri, 03 Jul 2026 02:41:22 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=t0CT87OuA05SpBVgeGbrWe6Ia4iccd6TEo4zPSFNhBQ=; b=f7UPltNFKjO+
 2Tpvt6yvR7GU9WTqvUMlRhlAi8xTvXEm05UZNE5p0upDSFVVjYGTEA9O6qwvTN3aB4MfohFt+8QE0
 z0pZpKRroLchvAqjk0P+rpfisGHjZ2DDmeqi6djtnOZUHyGfci5yGkZBQh+O4YMf3rvbRK5yJD2Tu
 de+ch6pubPRBJ5QEYDplqapicTmn8EPtgk05Z3q7pM8B3RpvpHsgacffgGnSO3z4UIZNndMSyFB1i
 Osir+SZezjkttsXjq45SS2aJ8CRZRM2PncvucHGUYKFX9BZ4yFTQB5KfWEpTm8GyiD/7efzUuqPUz
 lqB2Fl5qZ5QJ7SOjtyrDBQ==;
Date: Fri, 03 Jul 2026 09:41:17 +0300
Message-Id: <867bncbmnm.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Filipp Gunbin <fgunbin@HIDDEN>
In-Reply-To: <m1jyrds40v.fsf@HIDDEN> (message from Filipp Gunbin on Thu, 
 02 Jul 2026 20:19:28 +0300)
Subject: Re: bug#81305: 32.0.50; [PATCH] end-of-defun off by 1 when given
 negative argument less than -1
References: <m1echucqe8.fsf@HIDDEN> <86mrwhkf2n.fsf@HIDDEN>
 <m18q81cya7.fsf@HIDDEN> <m1jyrds40v.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 81305
Cc: 81305 <at> debbugs.gnu.org, monnier@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Filipp Gunbin <fgunbin@HIDDEN>
> Cc: 81305 <at> debbugs.gnu.org,  Stefan Monnier <monnier@HIDDEN>
> Date: Thu, 02 Jul 2026 20:19:28 +0300
> 
> On 26/06/2026 14:54 +0300, Filipp Gunbin wrote:
> 
> > On 26/06/2026 09:09 +0300, Eli Zaretskii wrote:
> >
> >>> From: Filipp Gunbin <fgunbin@HIDDEN>
> >>> Date: Thu, 25 Jun 2026 23:32:31 +0300
> >>> 
> >>> 
> >>> - emacs -Q
> >>> 
> >>> - Create & visit file with this contents:
> >>> 
> >>> --8<---------------cut here---------------start------------->8---
> >>> (defun foo()
> >>>   )
> >>> 
> >>> (defun bar()
> >>>   )
> >>> 
> >>> (defun baz()
> >>>   )
> >>> ;;
> >>> -!-
> >>> --8<---------------cut here---------------end--------------->8---
> >>> 
> >>> - Put point at EOB, as indicated
> >>> 
> >>> - M--2 C-M-e
> >>> 
> >>> - Instead of moving to the empty line between bar and baz, point moves
> >>>   to the comment line.
> >>
> >> I think there's more here than meets the eye.  With the following
> >> slightly-modified recipe:
> >>
> >> ----------------------------------------------------------------------
> >> (defun foo()
> >>   )
> >>
> >> (defun bar()
> >>   )
> >>
> >> (defun baz()
> >>   )
> >> -!-;;
> >> ----------------------------------------------------------------------
> >>
> >> "C-u -2 C-M-e" works as expected.  I think what triggers the
> >> difference in behavior is the fact that in your example there's some
> >> text between point and the end of previous defun.
> >>
> >
> > Exactly.  Current code:
> >
> >        ((< arg 0)
> >         ;; Moving backward.
> >         (if (< (point) pos)
> >             ;; We already moved backward because we started from between
> >             ;; two functions.
> >             (setq arg (1+ arg))
> >           ;; We started from inside a function.
> >           (goto-char beg))
> >
> > already moves to beg when initial "beginning then end" movement didn't
> > make any progress ("else" branch).  What I'm fixing is "then" branch,
> > where we count the progress made as 1, and then the process continues
> > from _end of defun_, not from its beginning, and we end up counting it
> > twice.
> >
> > I should have written in more explicitly.
> 
> With the information I've given, can I install the patch on master?

I'd like to hear from Stefan first.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#81305; Package emacs. Full text available.

Message received at 81305 <at> debbugs.gnu.org:


Received: (at 81305) by debbugs.gnu.org; 2 Jul 2026 17:19:44 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jul 02 13:19:43 2026
Received: from localhost ([127.0.0.1]:43587 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1wfL4f-0005Bo-5P
	for submit <at> debbugs.gnu.org; Thu, 02 Jul 2026 13:19:43 -0400
Received: from fout-a3-smtp.messagingengine.com ([103.168.172.146]:54395)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <fgunbin@HIDDEN>)
 id 1wfL4a-0005AV-PB
 for 81305 <at> debbugs.gnu.org; Thu, 02 Jul 2026 13:19:38 -0400
Received: from phl-compute-01.internal (phl-compute-01.internal [10.202.2.41])
 by mailfout.phl.internal (Postfix) with ESMTP id 71B7CEC014B;
 Thu,  2 Jul 2026 13:19:31 -0400 (EDT)
Received: from phl-frontend-04 ([10.202.2.163])
 by phl-compute-01.internal (MEProxy); Thu, 02 Jul 2026 13:19:31 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastmail.fm; h=
 cc:cc:content-type:content-type:date:date:from:from:in-reply-to
 :in-reply-to:message-id:mime-version:references:reply-to:subject
 :subject:to:to; s=fm2; t=1783012771; x=1783099171; bh=+S7gEZIx+j
 wLMkIyWcCQsAVTCWG3+XC5CEpFoa0n2kI=; b=WYfs8gd4CiV7b8w6lRbhBfnQJd
 ouCppeMg4EoRbsgdx0MP7ziENvH2mtRSbg215IJ7lq0Fw8mKx0iRX6ewb0CSK09v
 tbyqVeHlww5YiL4XwMeXCN3qC4zrgrdF8ckxOAjFAmxXXcLQ3rbFaufvTYjBqNub
 TT/ymgaXSWm6kmXCdelCY6eSg5phblzZD3HrRM4+G/xTbg8Ve0x9u6tMBKoFm/7w
 jVgvw20Klesz4bG9NYl8OdZCyxKEYMzfcWUA7pMbIrS2Qpx6lIG4x/tHRQZbYfqe
 2jixJ8W3pJFPayYQhU9/2YPArNPut9WglJVVvNA1mkysZargBVPuYxS8FROA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
 messagingengine.com; h=cc:cc:content-type:content-type:date:date
 :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to
 :message-id:mime-version:references:reply-to:subject:subject:to
 :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=
 1783012771; x=1783099171; bh=+S7gEZIx+jwLMkIyWcCQsAVTCWG3+XC5CEp
 Foa0n2kI=; b=Ur7jZwACduDIS2HsRAZHXRnKKEtGTfbkZ2wqqj4ZLEIclNnDEf1
 oTyMkE9JLCHyscKBTP5JyFvqgdLZi7yIq4Ne7UlQoKQM0pwIS+X8FvudCvRBrQ5e
 TK2ycUW5gEyikG4qVgh4j26LuhvcMWr9Byq6YABvk6uq7Z7Amg45e1fS/aKFrf+V
 X2V4MwaOKD3kUjFrt2MN/AgTbclG9MjpNfDBYjHP4FlkYE/0Jcu+S3JLSMSdcLkd
 noffDRCf3KNa/C2oUjLaWkUpTPNNk/RTFCnnnfkpiQ52zl9z7q/CV6jnG3fT+U8u
 68RgbushCdg7NLSkF3JUvF0DWfM/Z5xZthw==
X-ME-Sender: <xms:o51GasvRiQnnRJ1V8jfdeZRWwF_L-dfJyoqCdfdzickk6GJZ0bhxWg>
 <xme:o51GahM5GTxfnPY7Lu8BsvJ31MPpwYHS-t4mOvHu8v2fNCyZDLay6UasaOWt-jASA
 HA3ofAzcqnwubXBAsXasgJYj19ENuMA-m3LhSfrPvyxxDM335TV>
X-ME-Received: <xmr:o51Gaq3a6cH0uo0IGGBUYW7RhqgW-LaMfrSbmXM75fRq_8W5-DGvc6JqaCLGWEw>
X-ME-Proxy-Cause: dmFkZTGE3sYWDOBGuqaBswI9f8Q8Qocric2eT6CWb3OGvJd4JInoiaNLAlGFRKJvpOAvNT
 s8zgNR00B+fdZRDQIYge7WKPCz5inu5RBIhjP1r0oUv/oO9WaBWHp7iba2QZhGnxwJMFWm
 MstGFBMKw1tMi46GeH5jk80474jHrgOnlHh2ZZG1bkxAogOFnXpmhD00M0uwFQTa1kCyR3
 yB/SN+cwOMgVBsXoqehdmvPx8f0W9rMtEu4dYlYJw6qB9wtv+1nObGAQMQJ9Ze0mRasGTq
 rUo68Wdfrg1c4558gvdVhB7lNNAO4R+72EqUcNg/0DSuK06F1h/BMgt5Nkg4gWzrLtfnK5
 1C+BGb2mWEivw/6iSFqiumbXG09IwL+kXBBUZYWZWCenJ4+epmrBOsPnseENGqWsFa8ZP0
 mB5pY+pFhbpKWA5iYyQtOQLKhV3ZfHhARpsA6WZ4QofmBttkrF5Cyf7lWW1MqJIztmPEm+
 Ov3VjIM2Z8wDxgD8m/6ezH8BAckZK0QXFgCzEgFEnjLrx5gknxAkvDp9iM1BKcRS5tQiLf
 dGj6gzkYj0ULGwuzxYPTU31kdwqLXv5AkpTDsONZiRnhSkBi4QRzuXWtg8Ow+F3Ae4jLLj
 MsTpGD3gMKX3LWw1tqo/PIJSD1v8T/qWq3p0+rUuFwRGOd5vnnzw8YE8hC+w
X-ME-Proxy: <xmx:o51GatMKF1OxSDb02jwXFz3COMNE7TF6b1AZ3sFerzZUKibEI1rAMw>
 <xmx:o51Gaq034Ha81trkYj6TXCqeu3LFTamU-hlFgIANOD0uudkH5fL8bA>
 <xmx:o51GakHjJ8ycPfI2IyUWTdvDe782HFET0rSjmF0zQWfZeAtWpK_e6A>
 <xmx:o51Gan42_g7NxRYewYk3Aa5mRuDC4MtcMukCEg1bD05F49Ste0b5Qg>
 <xmx:o51GasfRBiilvLd1QAJ1UjWxrNtZB6wss0FAerNvXHmJoe2442kJUFdC>
Feedback-ID: id48c41f1:Fastmail
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu,
 2 Jul 2026 13:19:30 -0400 (EDT)
From: Filipp Gunbin <fgunbin@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#81305: 32.0.50; [PATCH] end-of-defun off by 1 when given
 negative argument less than -1
In-Reply-To: <m18q81cya7.fsf@HIDDEN>
References: <m1echucqe8.fsf@HIDDEN> <86mrwhkf2n.fsf@HIDDEN>
 <m18q81cya7.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
Date: Thu, 02 Jul 2026 20:19:28 +0300
Message-ID: <m1jyrds40v.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 81305
Cc: 81305 <at> debbugs.gnu.org, Stefan Monnier <monnier@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

On 26/06/2026 14:54 +0300, Filipp Gunbin wrote:

> On 26/06/2026 09:09 +0300, Eli Zaretskii wrote:
>
>>> From: Filipp Gunbin <fgunbin@HIDDEN>
>>> Date: Thu, 25 Jun 2026 23:32:31 +0300
>>> 
>>> 
>>> - emacs -Q
>>> 
>>> - Create & visit file with this contents:
>>> 
>>> --8<---------------cut here---------------start------------->8---
>>> (defun foo()
>>>   )
>>> 
>>> (defun bar()
>>>   )
>>> 
>>> (defun baz()
>>>   )
>>> ;;
>>> -!-
>>> --8<---------------cut here---------------end--------------->8---
>>> 
>>> - Put point at EOB, as indicated
>>> 
>>> - M--2 C-M-e
>>> 
>>> - Instead of moving to the empty line between bar and baz, point moves
>>>   to the comment line.
>>
>> I think there's more here than meets the eye.  With the following
>> slightly-modified recipe:
>>
>> ----------------------------------------------------------------------
>> (defun foo()
>>   )
>>
>> (defun bar()
>>   )
>>
>> (defun baz()
>>   )
>> -!-;;
>> ----------------------------------------------------------------------
>>
>> "C-u -2 C-M-e" works as expected.  I think what triggers the
>> difference in behavior is the fact that in your example there's some
>> text between point and the end of previous defun.
>>
>
> Exactly.  Current code:
>
>        ((< arg 0)
>         ;; Moving backward.
>         (if (< (point) pos)
>             ;; We already moved backward because we started from between
>             ;; two functions.
>             (setq arg (1+ arg))
>           ;; We started from inside a function.
>           (goto-char beg))
>
> already moves to beg when initial "beginning then end" movement didn't
> make any progress ("else" branch).  What I'm fixing is "then" branch,
> where we count the progress made as 1, and then the process continues
> from _end of defun_, not from its beginning, and we end up counting it
> twice.
>
> I should have written in more explicitly.

With the information I've given, can I install the patch on master?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#81305; Package emacs. Full text available.

Message received at 81305 <at> debbugs.gnu.org:


Received: (at 81305) by debbugs.gnu.org; 26 Jun 2026 11:59:46 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jun 26 07:59:45 2026
Received: from localhost ([127.0.0.1]:42269 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1wd5Dj-0005GE-3E
	for submit <at> debbugs.gnu.org; Fri, 26 Jun 2026 07:59:44 -0400
Received: from fout-b6-smtp.messagingengine.com ([202.12.124.149]:59967)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <fgunbin@HIDDEN>)
 id 1wd5De-0005Fb-Ug
 for 81305 <at> debbugs.gnu.org; Fri, 26 Jun 2026 07:59:40 -0400
Received: from phl-compute-03.internal (phl-compute-03.internal [10.202.2.43])
 by mailfout.stl.internal (Postfix) with ESMTP id 034BB1D000B8;
 Fri, 26 Jun 2026 07:59:32 -0400 (EDT)
Received: from phl-frontend-03 ([10.202.2.162])
 by phl-compute-03.internal (MEProxy); Fri, 26 Jun 2026 07:59:33 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastmail.fm; h=
 cc:cc:content-type:content-type:date:date:from:from:in-reply-to
 :in-reply-to:message-id:mime-version:references:reply-to:subject
 :subject:to:to; s=fm1; t=1782475172; x=1782561572; bh=doxDJ4URH6
 oZfMoq5iDqx8PMBdEcza1+oWAxVTbohbw=; b=d4IcDSQ2tG2R79aLQpMUXT3t+t
 bSNBswc7suyqpMnKq2tvq1u1apK8ToDi+O+QEBq/+T28YWcjCO3wcJ6K3hKQPa4Q
 WmaLg4iCGI95F8BmvD4+Shv4SDt4KvZHDOw8lOIoCaYVvEgmn13A2EnHMTjoRmbS
 BciaMw6lGEqUawwoumREBJH8r8eTj6MQZ4lw0zabLyrAXVLsfX3Eb+QcAyLbi4oR
 NbztXX5nPAEsxbcwDaDDtQt8WXtdsKErVSHVb5aW3spQfKFD4X/aWKIERnoudnzR
 pfl7JJ3xjlHwwRtmS+OsowlNf0QWA0dFxc41e4YWWoWkl9METdnLkxsv8YvA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
 messagingengine.com; h=cc:cc:content-type:content-type:date:date
 :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to
 :message-id:mime-version:references:reply-to:subject:subject:to
 :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=
 1782475172; x=1782561572; bh=doxDJ4URH6oZfMoq5iDqx8PMBdEcza1+oWA
 xVTbohbw=; b=ab8EbvCIuPePo4r1A3mDpIO12wqB/2pPXlumB75jjLrREnLPjrx
 eowrR9zKXsgmaaF7PvFYyhw7HfJn8uEGktjssD8Hc0SXHAsyZ7ULfVgYvNBDD3sc
 vfXGgsEUuDSVEaWPpPHx8OJGc2DABG8ug20G+c1xRXXErhjy1Heor3Ncm/gOm9yG
 B903Xjq2NvLPQ2EcQh3xkb+/suzLMJGC69F/RLKJxoz6k6iFyob4jaz19kDP9dAV
 75FqIq7DtNhJJj2bBR6hxA7xJbwfBeMwgVj8sq7lEDufSolspqGeugMx65hILmW9
 SHTG+y2nq6Ps3PYFWmZhEMEMJldCo4YgxRA==
X-ME-Sender: <xms:pGk-aq3O4tnRJYmSPPodEJTzYTkvRkj-eIMMp8t12dJwfUW1-H5d9g>
 <xme:pGk-ak3xhwG7131PzY4b3uN_FVLzTX-W_4XpO5IjmHwgNEphy8VedH22d1TxKySAS
 fK2D61wg8NsVQYpw1A7EMJ-Q1yuT1dYhLGNuC0tS1YRjyYHXFyj>
X-ME-Received: <xmr:pGk-al9nCm0WixUqbJvFVnH5yYZmr_HWU2V4UIuWYedcRxHE952VK_BlBa7A82GwJngEPa3910sVX4aMR8C0aK_eXmC88NM>
X-ME-Proxy-Cause: dmFkZTGLWSfCH95Ff5dQwmT4UySu3a+GX79TTr6oi+Y3o7l95dtcnuCq5TDQZHWdJDzoRd
 8wUkKt5qvU8wN+e2GZy3FcL3r6SjKGie5U6sABy6ALiFlKEXMLhfSjwfmfbq5XsNwfulgz
 14gEZT7FwBbc71AV/v4b8Wx/cicUQF3NnnyAnrU+HvSENzDDRxEkTXBXZcKymYq7vavDFA
 aAOQBTbVkERtjPyAFc1r2Irvvi9V7kLuDh5TWASBnIcz6EKrK1rGtPhZddm2CmhUXkURja
 ra9BHO/eKCvR9j0DEj0nAxp/A9CxdOSEtv9/z8eFQ3A/DI47cPrfVaLn6Mr3fDex8nV2j3
 Kf5PbLY/MrbTwA0EgDXNI1SiBRtUSqDXn6ua1Tpwd84cwePIz2l3gBuLpszJCVKpMJJH8k
 zL3EhKh/bpDpZZ+EMWad87S27WBxccS9kX3Rzgx6Wj8zKlfjGNl20e1zo+LApdBXq/mPkg
 KfmAP59FQAxn4QDwWTm9lJMR0hkiW1swJmyinOA74UNw8t8cpS3uyvc1i87gfUGiE2GtDW
 YrV8krlkallQeZuGRVETLOQ2MyHFVV+FINlxzLRWjTvVFdpJ76gzFba4vWctQZMFDRF/+R
 ayvI21BlvnExUhYrcEPGaMYsmwNHNMoYCZzWHgAFcnuicHnIpfJInS3Y70LQ
X-ME-Proxy: <xmx:pGk-ap3ecn6cEl6RowtS4ljzYkca-0gRhVHMS8OL7pbqwVllXqv7uQ>
 <xmx:pGk-aq_geNewf0A8PciN526K381r6ONEF8Erf-68CEnwymBNaaHQ0g>
 <xmx:pGk-ahul157KtwNdCTfUU1Tshcaz-bNJ50bP-Opmg27ldyDKrhJPEQ>
 <xmx:pGk-alCc9WySYzud8foG6d-COosYlnZqA-ibXqtDOcw8fK_1h4hVNA>
 <xmx:pGk-aoHxQZaCYqiDmz645sWwxaeHkmc3zZDVf_jDe4G0O7uZoBFblHyp>
Feedback-ID: id48c41f1:Fastmail
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri,
 26 Jun 2026 07:59:31 -0400 (EDT)
From: Filipp Gunbin <fgunbin@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#81305: 32.0.50; [PATCH] end-of-defun off by 1 when given
 negative argument less than -1
In-Reply-To: <m18q81cya7.fsf@HIDDEN>
Organization: https://plainsoftware.org
References: <m1echucqe8.fsf@HIDDEN> <86mrwhkf2n.fsf@HIDDEN>
 <m18q81cya7.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
Date: Fri, 26 Jun 2026 14:59:30 +0300
Message-ID: <m11pdtcy1p.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 81305
Cc: 81305 <at> debbugs.gnu.org, Stefan Monnier <monnier@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

On 26/06/2026 14:54 +0300, Filipp Gunbin wrote:

> I should have written in more explicitly.
                        ^^ it




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#81305; Package emacs. Full text available.

Message received at 81305 <at> debbugs.gnu.org:


Received: (at 81305) by debbugs.gnu.org; 26 Jun 2026 11:54:43 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jun 26 07:54:42 2026
Received: from localhost ([127.0.0.1]:42252 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1wd58p-0004lR-R6
	for submit <at> debbugs.gnu.org; Fri, 26 Jun 2026 07:54:42 -0400
Received: from fhigh-b3-smtp.messagingengine.com ([202.12.124.154]:46787)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <fgunbin@HIDDEN>)
 id 1wd58j-0004kW-SM
 for 81305 <at> debbugs.gnu.org; Fri, 26 Jun 2026 07:54:36 -0400
Received: from phl-compute-05.internal (phl-compute-05.internal [10.202.2.45])
 by mailfhigh.stl.internal (Postfix) with ESMTP id 32C0E7A0130;
 Fri, 26 Jun 2026 07:54:28 -0400 (EDT)
Received: from phl-frontend-04 ([10.202.2.163])
 by phl-compute-05.internal (MEProxy); Fri, 26 Jun 2026 07:54:28 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastmail.fm; h=
 cc:cc:content-type:content-type:date:date:from:from:in-reply-to
 :in-reply-to:message-id:mime-version:references:reply-to:subject
 :subject:to:to; s=fm1; t=1782474868; x=1782561268; bh=t8zVbPY51H
 e1TG19JVkCRRmJjnB/2T842zvVNoOfZ70=; b=n7KzdwWRbm+DtitEY3VHYkv/e5
 +7MAzO4lHUeL/IINgEB5QG44/ILr8HPXeZoKez06U4M8lyOTMpHVWfq06ZEwY98B
 L+cuT/N4V87jlRU9/Yr9yhdL1cD6dhxvwaKF4fOjbMWUAlyojBzfwMMsthXITSjq
 RbxjsHfD7eRI7RkhtdH5vE8v2gtSC/RZS++cdQ7jWM/8QAR8bZ9U0yDWFBQDNHQc
 cjUIfDszys9hM2SbcG1A5k30RkmtrY1dMitTStfelHkdekcuivKZTYQeKsVgDug8
 Za/qZN82qb7st3GA2p4hRlSjxGYiyhm0dQms0BLAh9WadVTqaeW4AleEAakA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
 messagingengine.com; h=cc:cc:content-type:content-type:date:date
 :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to
 :message-id:mime-version:references:reply-to:subject:subject:to
 :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=
 1782474868; x=1782561268; bh=t8zVbPY51He1TG19JVkCRRmJjnB/2T842zv
 VNoOfZ70=; b=YLtMgyAmaAdqiYXFysgwlaCYcMbnBgLX0VHYBWPJtd1N/VszBcV
 pbue5g8UlV0ANfZ2a97DzVGRx+GdKk+XudznDbAS8QGVyDWrFIN9CyF/WdVSultI
 lL9NT4iUbozYKygY8+TaUnZB6wxAim+K30hEF8BiecB05xHLpEjdI6boLrMh13Qr
 Eqz/saxpXlppuU3vmOycdAs0cYrKuaPUfcQMi+0rBfu1iS5FOxKW3XtdEXGdPBLD
 /mJ553b7w0IAnH/o/EZ5CByYu0MgZQBRzxBd3VoD4XwIp3gdMlFj4ySAGVTDwLij
 P58Br7tvm1I3jsA/YeNJBBiC8reBI4S35WQ==
X-ME-Sender: <xms:c2g-aspnIa5k3D3udNws0esxvdxMzfVGOusu8UJmyFj0fSRl4ja1uA>
 <xme:c2g-aqYwe-qCeLdtw-UlBx0DR9Pf6KzMrvnot55YPLUwzNqMp4sSIdCVWKZivNoy1
 pwYNg9RbU4N1A0XC6A993ZNJmAROAmowwNs62g-Xx-Y1cp4KA>
X-ME-Received: <xmr:c2g-akRWkruiAfck6TtVQC9RjHra0oeJNP2q0J-rk-UAEdwAKWfUpFrl1REikMbGlAjac6EmTiV5KRtA0ZsqN-sDGsoEVsU>
X-ME-Proxy-Cause: dmFkZTFUy/3AozxhJbEhFYVLe24yem8sTazmA1M0yciMoCjcc1hLlgx/yF70hx2iSWN2di
 e52lX1SXp4qJUOaoXOWfU/+oqWdtwIzmswtyDPQ1juar80PFbzD7dIN6mFWsfhH8BIegvm
 aT5LAIdpBQAShFuidmIT34K11h4ApS5zyMbGf2qr4yDqSwsT9ZzYFTC5VOA4JOcGeLJjaw
 Y4kkG9jXSPHEIC9IjkveTL3zg1BVDXmE8KmTMFCTtRWYUkLFDVDuwLuzXW9L4EWPBQeAIQ
 2qlKXtC0ikmqMxb495kNV9SRxX26RzXiijmhzfTLNt7M6VrRxXqMlcaiBFjIqmUi3xtaSi
 9iZEH394W6rpDM9eKAaSFzR/Mr83YfKJC8Mch5gOEgulddDGr4PSqgx816BUoZdirQ6vPv
 who/rLb+JdKaVbVB1V+R/QLaP1HCd/VvztAOkFkbbb4tKrGAjKVTT/Z2E64/gHEJ3zwVCZ
 51c6v0l2plyY/ghxe6iGdBs4m2MPRqc0yW3cOQfggzyfQ1ZobZRiLaEn7EMR2cGe/hzJsY
 PYWXNo9LyH4TMPEP6N3ifUp+rDambbihTvhL2Kr997iwBiQ1QqLzaU3JelUHRHJn+YzVTQ
 qZ49M5AwzvohJl0/Es/EMzpYyTAUvnlEuIwhcy/HZ9E09DvjV1Csic7DUH9w
X-ME-Proxy: <xmx:c2g-ah5UEeBXBnZ2ucCugh5RAD2xvKx8zS86YZnJ9mjo5bpXIj2cGQ>
 <xmx:c2g-apzObvZkIhzhmdhLkjpWta9TJJmZHfEPFC56pLPuxWKHBS5r5Q>
 <xmx:c2g-agThzJ0YAMK3lSxf18Rq98-WPgPa9hkzJjA1eqyzxInI_JHWyQ>
 <xmx:c2g-aoV0_5cTCWK_ozbhebrYFw6YhTGDiJxc0VzcflkmvOLh2PlXSQ>
 <xmx:dGg-akRmUq8V92FcspN6TCZdvHVhMgiRHfENtux_KE4I5pnmeYgI42x2>
Feedback-ID: id48c41f1:Fastmail
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri,
 26 Jun 2026 07:54:26 -0400 (EDT)
From: Filipp Gunbin <fgunbin@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#81305: 32.0.50; [PATCH] end-of-defun off by 1 when given
 negative argument less than -1
In-Reply-To: <86mrwhkf2n.fsf@HIDDEN>
Organization: https://plainsoftware.org
References: <m1echucqe8.fsf@HIDDEN> <86mrwhkf2n.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
Date: Fri, 26 Jun 2026 14:54:24 +0300
Message-ID: <m18q81cya7.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 81305
Cc: 81305 <at> debbugs.gnu.org, Stefan Monnier <monnier@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

On 26/06/2026 09:09 +0300, Eli Zaretskii wrote:

>> From: Filipp Gunbin <fgunbin@HIDDEN>
>> Date: Thu, 25 Jun 2026 23:32:31 +0300
>> 
>> 
>> - emacs -Q
>> 
>> - Create & visit file with this contents:
>> 
>> --8<---------------cut here---------------start------------->8---
>> (defun foo()
>>   )
>> 
>> (defun bar()
>>   )
>> 
>> (defun baz()
>>   )
>> ;;
>> -!-
>> --8<---------------cut here---------------end--------------->8---
>> 
>> - Put point at EOB, as indicated
>> 
>> - M--2 C-M-e
>> 
>> - Instead of moving to the empty line between bar and baz, point moves
>>   to the comment line.
>
> I think there's more here than meets the eye.  With the following
> slightly-modified recipe:
>
> ----------------------------------------------------------------------
> (defun foo()
>   )
>
> (defun bar()
>   )
>
> (defun baz()
>   )
> -!-;;
> ----------------------------------------------------------------------
>
> "C-u -2 C-M-e" works as expected.  I think what triggers the
> difference in behavior is the fact that in your example there's some
> text between point and the end of previous defun.
>

Exactly.  Current code:

       ((< arg 0)
        ;; Moving backward.
        (if (< (point) pos)
            ;; We already moved backward because we started from between
            ;; two functions.
            (setq arg (1+ arg))
          ;; We started from inside a function.
          (goto-char beg))

already moves to beg when initial "beginning then end" movement didn't
make any progress ("else" branch).  What I'm fixing is "then" branch,
where we count the progress made as 1, and then the process continues
from _end of defun_, not from its beginning, and we end up counting it
twice.

I should have written in more explicitly.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#81305; Package emacs. Full text available.

Message received at 81305 <at> debbugs.gnu.org:


Received: (at 81305) by debbugs.gnu.org; 26 Jun 2026 06:10:05 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jun 26 02:10:05 2026
Received: from localhost ([127.0.0.1]:40904 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1wczlN-0003TY-7c
	for submit <at> debbugs.gnu.org; Fri, 26 Jun 2026 02:10:05 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:35382)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1wczlK-0003Sc-Jp
 for 81305 <at> debbugs.gnu.org; Fri, 26 Jun 2026 02:10:04 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1wczlD-0007n0-N7; Fri, 26 Jun 2026 02:09:55 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=62bCBzD1a8ryAnqJIm9qyYOUWwqckOf5Nih9b+Fh1wg=; b=AQG2cCpa5ZrM
 0ykhmJygAWwYzxpjXJHzNlcXCMbvV49xH6d3VKO0uWLxksLajj2eLF0gfX6HFiJR/kgdgsvlSI4Cb
 xuZ/mEw2q+AKb8nGo13HyKEmE6aGEcp+mGHz57rea95qByNJt73zrIzXaAXi2HJSSRSmsYNaHYkog
 lK9NEb+cvCAByyhnU4yxyRX19Hp436iBqQgaw24iRbLFNAYiIvNm/oui7u2XquS5X9/yFJd+lwJht
 4sHqrHjIm5sKAbewPu9Wg+4wlkMEmgQ8xVwKBvBawgcTb2T3RtAr8vtJhaVNp4Ntl5ANTmIuV8w43
 SbHXeJWjaoOfJwXaXwH+rA==;
Date: Fri, 26 Jun 2026 09:09:52 +0300
Message-Id: <86mrwhkf2n.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Filipp Gunbin <fgunbin@HIDDEN>,
 Stefan Monnier <monnier@HIDDEN>
In-Reply-To: <m1echucqe8.fsf@HIDDEN> (message from Filipp Gunbin on Thu, 
 25 Jun 2026 23:32:31 +0300)
Subject: Re: bug#81305: 32.0.50;
 [PATCH] end-of-defun off by 1 when given negative argument less than
 -1
References: <m1echucqe8.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 81305
Cc: 81305 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Filipp Gunbin <fgunbin@HIDDEN>
> Date: Thu, 25 Jun 2026 23:32:31 +0300
> 
> 
> - emacs -Q
> 
> - Create & visit file with this contents:
> 
> --8<---------------cut here---------------start------------->8---
> (defun foo()
>   )
> 
> (defun bar()
>   )
> 
> (defun baz()
>   )
> ;;
> -!-
> --8<---------------cut here---------------end--------------->8---
> 
> - Put point at EOB, as indicated
> 
> - M--2 C-M-e
> 
> - Instead of moving to the empty line between bar and baz, point moves
>   to the comment line.

I think there's more here than meets the eye.  With the following
slightly-modified recipe:

----------------------------------------------------------------------
(defun foo()
  )

(defun bar()
  )

(defun baz()
  )
-!-;;
----------------------------------------------------------------------

"C-u -2 C-M-e" works as expected.  I think what triggers the
difference in behavior is the fact that in your example there's some
text between point and the end of previous defun.

> Problem: in end-of-defun, we first move to the beginning of baz(), then
> to its end.  Point moved backwards, so we increment arg by 1, it's now
> -1.  But when we search further backwards for the beginning of defun,
> we're still at the end of baz(), which we already counted.
> 
> We should move to the beginning of baz first, but only when we indeed
> intend to search further.  The following patch does that, please review.

Please explain the difference between the two examples above.  Given
you explanation, I cannot explain the difference, maybe because I'm
confused reading it.

Thanks.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#81305; Package emacs. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 25 Jun 2026 20:32:53 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jun 25 16:32:53 2026
Received: from localhost ([127.0.0.1]:36433 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1wcqkl-0000EU-40
	for submit <at> debbugs.gnu.org; Thu, 25 Jun 2026 16:32:53 -0400
Received: from lists1p.gnu.org ([2001:470:142::17]:53098)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <fgunbin@HIDDEN>)
 id 1wcqkh-0000DR-RG
 for submit <at> debbugs.gnu.org; Thu, 25 Jun 2026 16:32:49 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10])
 by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <fgunbin@HIDDEN>)
 id 1wcqkY-0005j1-7D
 for bug-gnu-emacs@HIDDEN; Thu, 25 Jun 2026 16:32:38 -0400
Received: from fhigh-b6-smtp.messagingengine.com ([202.12.124.157])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <fgunbin@HIDDEN>)
 id 1wcqkV-0000kf-ML
 for bug-gnu-emacs@HIDDEN; Thu, 25 Jun 2026 16:32:37 -0400
Received: from phl-compute-03.internal (phl-compute-03.internal [10.202.2.43])
 by mailfhigh.stl.internal (Postfix) with ESMTP id 16EB87A00CE
 for <bug-gnu-emacs@HIDDEN>; Thu, 25 Jun 2026 16:32:34 -0400 (EDT)
Received: from phl-frontend-03 ([10.202.2.162])
 by phl-compute-03.internal (MEProxy); Thu, 25 Jun 2026 16:32:34 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastmail.fm; h=
 cc:content-type:content-type:date:date:from:from:in-reply-to
 :message-id:mime-version:reply-to:subject:subject:to:to; s=fm1;
 t=1782419553; x=1782505953; bh=B+aAbXzebElKMhcNLn/zAKaLC4J1EthV
 mh7pMJWZRAI=; b=d4Pia6whz5CYh7TKHqTjsyT7i2OTKeBR5SXqT5pblHXk/KgU
 IA2S+RbtrCs6iz3EprhVEE4L1dKxKzKZrY1xIU14Eu04upLZtDsiSuUGAZvRhZON
 7syUX2Zj0r+PBtzfq13EpSCm1rTasQ20ucWBK64gnh36kqvTG/1UXikb3hIJ6XxG
 70RxIwuPbOOObnOB5IcdZXE38ysVS0KtcXEHNqZEgU6FpTTc/wZZ0BQEp9HPU9zR
 cyftNUNU3z6A1fgVPNMEbAY9hkxXkFYPD+XFLizZ2kiPLGj7G/axeVuELYlxR2KM
 Y7PJpFx2j4BY9G7m9uGCv2oq0L4aNoAkmsbBHw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
 messagingengine.com; h=cc:content-type:content-type:date:date
 :feedback-id:feedback-id:from:from:in-reply-to:message-id
 :mime-version:reply-to:subject:subject:to:to:x-me-proxy
 :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1782419553; x=
 1782505953; bh=B+aAbXzebElKMhcNLn/zAKaLC4J1EthVmh7pMJWZRAI=; b=e
 qTRav+oHrb5E09tbhtwCKk8yqQqtaAor/M+VkH/crUYvWQ//1fnbbAJs2H/hA1Gf
 ty+Fw1gYMpxG6Zh4114WySd1UwzG33voUopGk6c825ay0uSksZfXUQYz/hILH6zS
 CuKmsYRT/PL0znuc/W2F+YilAPm6e9Js8lEWcSNHfxarsQdPX/SKjflp+FWVffJX
 UTpkH7WhwvNjzDqDuAkUc7jpSek0q0Lt6FalrJGKJWSiOofg3eiuP2ZoQfwFyYTS
 gccyIkytZebXT7N9/MzVgSGk9lib3cDlh9hyeUY8ouFIQDFmHXkgHRkHXO/Y2QrI
 r3ePaIShROmT7tL9aylXA==
X-ME-Sender: <xms:YZA9apgD9xax5uQTO1Ofbsfi4MmgQin9UbBDlZ4lX6LwYdBAHPXZmQ>
 <xme:YZA9aj6pJEcCbtRUc88sqdFnOdo_BZNwg8RV5YH6kPqWnaGdFcQmQ_VTf4c0NvYj8
 9g-PzNsyOcPrS0WRmj5GG_tXVlakdt6kJoVlb_ZoWZSw3NQwwio4w>
X-ME-Received: <xmr:YZA9akKQggxSDAf0cY5zCHhL8wUm_8TMXQGYgvjrCZJiXXeM9SGNTX_jHJFlliI>
X-ME-Proxy-Cause: dmFkZTGAqLEgARewxzZGTnQYAm9/w8/sSOQPa6oOLRvFW1sOedhuk4qVb0+61G/N9+b2O0
 aSF94jjoh+FKESPaLA8cNMFLwAy+AbIjZy178UrsLyHFSgayTYlrxkKpu9Vuv4g3YRFpAb
 VyuBH1IAtDHcTVM06EUaVbGVjVDp22s1k/bOqWQtpsGrzg2dEBbBBMDC9f0Zum360UOSAP
 Hwn3iWjdmFC1tGmovXBPWajR5Fz4vGp0tHejy7vJPDlBklBAo0QbpMb1Es+/BNkPvsSWlH
 aOm8SJZFeoU+ZA6H7Q4Qa3EuJCBvR4rKx00yfl+Pdu5FvIU9I21hvqB7L+Js5+QNEllhXg
 Lu/tf3aNK7+wTZIQsnOsgsVPBLbZ67jtW9dDuHyR9tQM6PHKQ4bJAeEYAqxfFl8aP40hfm
 qrRFbNWK6ORp6vq5Jyc5xGrpQ1EK5i62yhld4ROoEki6Rf2ZnkJlcq1Uf00bBpil9/h8If
 fNe5vOmu3mfxNsdE/OgYBAmj+6P9CN7HlpkGBCw2fVsshevzJHbgjhgp+Bmbp2c9PNi8QW
 ZGgix6Tos9eNM2KM9NyrNM7Nw+S/2sNF7z0eNcPcBQzBa9iIrD9ApJYZ4miXofB6I1xf4n
 tvNoSg/+seZXwdmrG3seEOrnX/9m7tEJ9YFtzlAaLZUYCAT28he3Xe09ZzMw
X-ME-Proxy: <xmx:YZA9arHMqoBEl42FY3_oLnJvzxy14XwHjBgsVy9Gr0cIT42Wsu78ag>
 <xmx:YZA9aqWY7uml_2FxNRZ6u3QoO50eOuTPuNZ-BYqZ70K9aPh1U7OEJA>
 <xmx:YZA9ami9TC6-ju1XdqehKGdzVCifG_euqM7EEKfCW2vEXvvxSzgEKA>
 <xmx:YZA9arQK3RXj8DLciqhS6QreS3_Tgt0cWJN0ETnfJYLpurrAp4E06w>
 <xmx:YZA9ahx1ZfCcByvxbBEIyI6gAMrGebk2xkN4SYGDtIbx6DHC5C8oXlrQ>
Feedback-ID: id48c41f1:Fastmail
Received: by mail.messagingengine.com (Postfix) with ESMTPA for
 <bug-gnu-emacs@HIDDEN>; Thu, 25 Jun 2026 16:32:33 -0400 (EDT)
From: Filipp Gunbin <fgunbin@HIDDEN>
To: bug-gnu-emacs@HIDDEN
Subject: 32.0.50; [PATCH] end-of-defun off by 1 when given negative argument
 less than -1
Organization: https://plainsoftware.org
User-Agent: Gnus/5.13 (Gnus v5.13)
X-Debbugs-Cc: 
Mail-Followup-To: bug-gnu-emacs@HIDDEN
Date: Thu, 25 Jun 2026 23:32:31 +0300
Message-ID: <m1echucqe8.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain
Received-SPF: pass client-ip=202.12.124.157; envelope-from=fgunbin@HIDDEN;
 helo=fhigh-b6-smtp.messagingengine.com
X-Spam_score_int: -27
X-Spam_score: -2.8
X-Spam_bar: --
X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
 DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001,
 RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_PASS=-0.001,
 SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: 1.7 (+)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 the administrator of that system for details.
 Content preview: - emacs -Q - Create & visit file with this contents: --8<cut
 herestart>8--- (defun foo() ) 
 Content analysis details:   (1.7 points, 10.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -0.0 RCVD_IN_DNSWL_NONE     RBL: Sender listed at https://www.dnswl.org/,
 no trust [2001:470:142:0:0:0:0:17 listed in] [list.dnswl.org]
 1.0 SPF_SOFTFAIL           SPF: sender does not match SPF record (softfail)
 0.0 FREEMAIL_FROM          Sender email is commonly abused enduser mail
 provider (fgunbin[at]fastmail.fm)
 -0.0 SPF_HELO_PASS          SPF: HELO matches SPF record
 0.7 SPOOFED_FREEMAIL       No description available.
X-Debbugs-Envelope-To: submit
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.0 (/)


- emacs -Q

- Create & visit file with this contents:

--8<---------------cut here---------------start------------->8---
(defun foo()
  )

(defun bar()
  )

(defun baz()
  )
;;
-!-
--8<---------------cut here---------------end--------------->8---

- Put point at EOB, as indicated

- M--2 C-M-e

- Instead of moving to the empty line between bar and baz, point moves
  to the comment line.

Problem: in end-of-defun, we first move to the beginning of baz(), then
to its end.  Point moved backwards, so we increment arg by 1, it's now
-1.  But when we search further backwards for the beginning of defun,
we're still at the end of baz(), which we already counted.

We should move to the beginning of baz first, but only when we indeed
intend to search further.  The following patch does that, please review.

Thanks.

--8<---------------cut here---------------start------------->8---
diff --git a/lisp/emacs-lisp/lisp.el b/lisp/emacs-lisp/lisp.el
index 41c740912f7..1db2f5693b6 100644
--- a/lisp/emacs-lisp/lisp.el
+++ b/lisp/emacs-lisp/lisp.el
@@ -634,13 +634,12 @@ end-of-defun
             (funcall end-of-defun-function))))
        ((< arg 0)
         ;; Moving backward.
-        (if (< (point) pos)
-            ;; We already moved backward because we started from between
-            ;; two functions.
-            (setq arg (1+ arg))
-          ;; We started from inside a function.
-          (goto-char beg))
+        (when (< (point) pos)
+          ;; We already moved backward because we started from between
+          ;; two functions.
+          (setq arg (1+ arg)))
         (unless (zerop arg)
+          (goto-char beg)
           (when (setq success (beginning-of-defun-raw (- arg)))
             (setq beg (point))
             (funcall end-of-defun-function)))))
diff --git a/test/lisp/emacs-lisp/lisp-tests.el b/test/lisp/emacs-lisp/lisp-tests.el
index 560fd436015..eb4b12b1ffb 100644
--- a/test/lisp/emacs-lisp/lisp-tests.el
+++ b/test/lisp/emacs-lisp/lisp-tests.el
@@ -403,10 +403,14 @@ end-of-defun-twice
   \"docstring\"
   body)

-;; end
+=!p3=;; end
 "
     (goto-char p1)
     (end-of-defun 2)
+    (should (= (point) p2))
+    ;; Negative arg
+    (goto-char p3)
+    (end-of-defun -2)
     (should (= (point) p2))))

 ;;; mark-defun
--8<---------------cut here---------------end--------------->8---



In GNU Emacs 32.0.50 (build 10, aarch64-apple-darwin25.5.0, NS
 appkit-2685.60 Version 26.5.1 (Build 25F80)) of 2026-06-25 built on
 mac2598okko
Repository revision: b66c995d5fb060b79bf866aa8d760ff0857ae32e
Repository branch: master
System Description:  macOS 26.5.1




Acknowledgement sent to Filipp Gunbin <fgunbin@HIDDEN>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs@HIDDEN. Full text available.
Report forwarded to bug-gnu-emacs@HIDDEN:
bug#81305; Package emacs. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Fri, 3 Jul 2026 06:45:07 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.