From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Rahguzar via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#69785: 29.2; Image mode can loop due to invalid images Date: Fri, 22 Mar 2024 18:24:09 +0100 Message-ID: <87wmpudvqy.fsf@zohomail.eu> References: <87edcdx17i.fsf@zohomail.eu> <86cyrn3n23.fsf@gnu.org> Reply-To: Rahguzar Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="38134"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: mu4e 1.10.5; emacs 29.2 Cc: 69785@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri Mar 22 18:41:51 2024 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1rnitq-0009iT-9v for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 22 Mar 2024 18:41:50 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rnitP-0005st-8V; Fri, 22 Mar 2024 13:41:23 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rnitN-0005sg-8T for bug-gnu-emacs@gnu.org; Fri, 22 Mar 2024 13:41:21 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rnitN-0000gh-0i for bug-gnu-emacs@gnu.org; Fri, 22 Mar 2024 13:41:21 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1rniu1-000317-Kz for bug-gnu-emacs@gnu.org; Fri, 22 Mar 2024 13:42:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Rahguzar Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 22 Mar 2024 17:42:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 69785 X-GNU-PR-Package: emacs Original-Received: via spool by 69785-submit@debbugs.gnu.org id=B69785.171112928711515 (code B ref 69785); Fri, 22 Mar 2024 17:42:01 +0000 Original-Received: (at 69785) by debbugs.gnu.org; 22 Mar 2024 17:41:27 +0000 Original-Received: from localhost ([127.0.0.1]:38132 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rnitT-0002ze-4F for submit@debbugs.gnu.org; Fri, 22 Mar 2024 13:41:27 -0400 Original-Received: from sender11.zoho.eu ([31.186.226.224]:37293 helo=sender-pp-o91.zoho.eu) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rnitO-0002zM-MD for 69785@debbugs.gnu.org; Fri, 22 Mar 2024 13:41:24 -0400 ARC-Seal: i=1; a=rsa-sha256; t=1711128328; cv=none; d=zohomail.eu; s=zohoarc; b=ihv0wZ1U74rJTN9Ze8NohYSIuffH9iI3JhxVqsPRAEIViw2PbyLBTie4siiFIThfJ56UsHNXqdF5gI7102756Ox2xDt0ORgtKL0W7QCsHqDEtl8Yiw+XAHZGt58XwfxykHykCjJV71PHA135g6+ZDlJRy4TYs1UBSj85g6byT9A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.eu; s=zohoarc; t=1711128328; h=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=vsaAQo8ty+FYyOqH6WLJMZXwg3Ctb5haZHgOVXcw0BY=; b=hU/0TyXuXKpMFvwIgzSlSiXGWj1aLbGtGsh19cxLKnvDhzhXFzuO2YWeA0aRFmSjt8yJcK7GVYSlvGvYiUhouzJ4WIOAtCYF2ppbxJHhbfx66tF4C4N0DTf+2WLtAYFUmuuadfzrIkwPGuKJOBli74ZZYqkCrxDU6seo3UXf8bU= ARC-Authentication-Results: i=1; mx.zohomail.eu; dkim=pass header.i=zohomail.eu; spf=pass smtp.mailfrom=rahguzar@zohomail.eu; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1711128328; s=zoho; d=zohomail.eu; i=rahguzar@zohomail.eu; h=References:From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:In-reply-to:Message-ID:MIME-Version:Content-Type:Message-Id:Reply-To; bh=vsaAQo8ty+FYyOqH6WLJMZXwg3Ctb5haZHgOVXcw0BY=; b=S7U8MP91MX6p+qcUwOeFNs1iUzrSRI3me/hN6c4HHthNnTHhPudAMYgfx0OEaTPT yqz7/DGSEoNsCCHTQVghEFg0V7mlTy71Gc1P9/cH0DeLTdaarjLUk8K70CuBdQbkYv6 Tvbr5mYeXbM6Bn+RKA92C+fFEUuDOGEmBjzjZooc= Original-Received: from localhost (emp-182-126.eduroam.uu.se [130.238.182.126]) by mx.zoho.eu with SMTPS id 1711128326957805.2095985578184; Fri, 22 Mar 2024 18:25:26 +0100 (CET) In-reply-to: <86cyrn3n23.fsf@gnu.org> X-ZohoMailClient: External X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list 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-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:281954 Archived-At: Hi Eli, The patch fixes the problem. Thanks, Rahguzar Eli Zaretskii writes: >> Date: Wed, 13 Mar 2024 22:13:55 +0100 >> From: Rahguzar via "Bug reports for GNU Emacs, >> the Swiss army knife of text editors" >> >> >> Dear Emacs developers, >> >> Starting with emacs -Q, evaluate >> >> (with-current-buffer (get-buffer-create "*image-mode-test*") >> (insert (propertize "abc" 'display (list 'image "Definitely not an image."))) >> (image-mode)) >> >> twice. >> >> The second time results in an error and pop ups the debugger, with the >> following text, >> >> Debugger entered--Lisp error: (excessive-lisp-nesting 1601) >> display-images-p() >> image-mode() >> major-mode-restore((image-mode image-mode-as-text)) >> image-mode-to-text() >> image-mode-as-text() >> image-mode--display() >> image-mode() >> major-mode-restore((image-mode image-mode-as-text)) >> image-mode-to-text() >> image-mode-as-text() >> image-mode--display() >> image-mode() >> major-mode-restore((image-mode image-mode-as-text)) >> image-mode-to-text() >> image-mode-as-text() >> image-mode--display() >> image-mode() >> ... >> >> It is unclear to me why this doesn't happen the first time but I think >> sequence causing it the second time is as follows: >> >> 1. 'image-mode' calls 'major-mode-suspend' when 'major' mode is >> 'fundamental-mode'. So 'major-mode--suspended' is not set. >> >> 2. 'image-mode--display' catches error and call 'image-mode-as-text' >> which calls 'image-mode-to-text'. >> >> 3. 'image-mode-as-text' calls 'major-mode-restore' with '(image-mode >> image-mode-as-text) as mode to avoid. >> >> 4. Since major-mode--suspended was not set in step 1 >> 'major-mode-restore' falls back to 'normal-mode' which calls >> 'image-mode' causing the loop. >> >> I think the simplest way of fixing this is to make sure that >> 'image-mode' doesn't call 'major-mode-suspend' with 'fundamental-mode' >> instead calling 'text-mode' or 'special-mode' before calling >> 'major-mode-suspend' if it starts in 'fundamental-mode'. > > How about the patch below instead? > > diff --git a/lisp/image-mode.el b/lisp/image-mode.el > index 355685e..fa64f1a 100644 > --- a/lisp/image-mode.el > +++ b/lisp/image-mode.el > @@ -654,8 +654,9 @@ image-mode > (unless (display-images-p) > (error "Display does not support images")) > > - (major-mode-suspend) > - (setq major-mode 'image-mode) > + (unless (eq major-mode 'image-mode) > + (major-mode-suspend) > + (setq major-mode 'image-mode)) > (setq image-transform-resize image-auto-resize) > > ;; Bail out early if we have no image data.