From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Jonathan Kyle Mitchell Newsgroups: gmane.emacs.bugs Subject: bug#32038: 27.0.50; Emacs hangs when using :propertize mode line construct and not providing a property value Date: Wed, 04 Jul 2018 23:14:01 -0500 Message-ID: <0e98e4beb51785ef2842a229b31e30e3ceed43e7.camel@jonathanmitchell.org> References: <87in5xf6xa.fsf@jonathanmitchell.org> <8736x16i4t.fsf@jonathanmitchell.org> <871scj7kxy.fsf@jonathanmitchell.org> <83po03niok.fsf@gnu.org> Reply-To: kyle@jonathanmitchell.org NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-b03UmweOYBPChXbkFA5B" X-Trace: blaine.gmane.org 1530763988 2095 195.159.176.226 (5 Jul 2018 04:13:08 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Thu, 5 Jul 2018 04:13:08 +0000 (UTC) Cc: k.michal@zoho.com, 32038@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Thu Jul 05 06:13:04 2018 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 1favdd-0000NR-KY for geb-bug-gnu-emacs@m.gmane.org; Thu, 05 Jul 2018 06:13:01 +0200 Original-Received: from localhost ([::1]:50233 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1favfk-0000L2-Dl for geb-bug-gnu-emacs@m.gmane.org; Thu, 05 Jul 2018 00:15:12 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:56191) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1favfe-0000Kc-7r for bug-gnu-emacs@gnu.org; Thu, 05 Jul 2018 00:15:07 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1favfb-0007m4-12 for bug-gnu-emacs@gnu.org; Thu, 05 Jul 2018 00:15:06 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:39249) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1favfa-0007lk-Sz for bug-gnu-emacs@gnu.org; Thu, 05 Jul 2018 00:15:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1favfa-00031e-IF for bug-gnu-emacs@gnu.org; Thu, 05 Jul 2018 00:15:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Jonathan Kyle Mitchell Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 05 Jul 2018 04:15:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 32038 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 32038-submit@debbugs.gnu.org id=B32038.153076405311555 (code B ref 32038); Thu, 05 Jul 2018 04:15:02 +0000 Original-Received: (at 32038) by debbugs.gnu.org; 5 Jul 2018 04:14:13 +0000 Original-Received: from localhost ([127.0.0.1]:47146 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1favem-00030J-Lc for submit@debbugs.gnu.org; Thu, 05 Jul 2018 00:14:12 -0400 Original-Received: from mail-oi0-f47.google.com ([209.85.218.47]:39717) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1favej-000304-5W for 32038@debbugs.gnu.org; Thu, 05 Jul 2018 00:14:09 -0400 Original-Received: by mail-oi0-f47.google.com with SMTP id d189-v6so14238627oib.6 for <32038@debbugs.gnu.org>; Wed, 04 Jul 2018 21:14:09 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:reply-to:to:cc:date :in-reply-to:references:mime-version; bh=XsFNriKiVyiJYf6yjHQ2PFwJZioD39TIfURMwdQqI40=; b=RQRRiPBkOSzEFOlZ5vGYRQdaZIYEZmDLi4xCcdENndYz2QM91tb5zZZ41w59qtWUKT iaY2aFHg9sR8L6GYOE8HbPo+tnDFCBlqc670oNQ1ORrrm/foIdsAgibFZfS944hQ6ePi 28USPMvp6N6AHjzBmKVclQg6i81O5/wz6aemkiwcfm+/XBG8iOBE1qUU71KB37mekgyy Ovl2bNRvnkAZETUvKoQTio1IMdfxkoO8YcX+xSQGKrTNU+aOCc2XLBm3c/DgU5SJE1qd aNZaCeEqCereMkF1nf9gPv2pP2d1p7YjctUnVn2k+dScy8FG2VbYxG/Ra1dFEQEQ0b1F vX6Q== X-Gm-Message-State: APt69E2a+dSUBBiuYMsBWz5TE1qltW7/3oK9Dq8zteHgRPWLL7HezVaK DLlS0LR2DbbiV9ZhOYr8HWI= X-Google-Smtp-Source: AAOMgpdYk84J4Fy9rKgT06xbXN38nOmKqtYU2VVL0pGTlKHbL0GezN2LhD6BcsJ/gAFn3mXzvrwKCg== X-Received: by 2002:aca:2c02:: with SMTP id s2-v6mr5330911ois.82.1530764043401; Wed, 04 Jul 2018 21:14:03 -0700 (PDT) Original-Received: from fedora-laptop ([2601:2c3:8880:3cc9::4a69]) by smtp.gmail.com with ESMTPSA id p2-v6sm2682085oih.38.2018.07.04.21.14.02 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 04 Jul 2018 21:14:02 -0700 (PDT) In-Reply-To: <83po03niok.fsf@gnu.org> X-Mailer: Evolution 3.28.3 (3.28.3-1.fc28) 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:148213 Archived-At: --=-b03UmweOYBPChXbkFA5B Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit On Wed, 2018-07-04 at 18:07 +0300, Eli Zaretskii wrote: > > From: Jonathan Kyle Mitchell > > Date: Tue, 03 Jul 2018 22:12:57 -0500 > > Cc: 32038@debbugs.gnu.org > > > > I think I found a way to make redisplay ignore any malformed > > property list by > > putting a single check around Fset_text_properties in xdisp.c. The > > text of the > > modeline is still set according to the provided string, but the > > property list > > is ignored if it doesn't have an even number of elements. It > > doesn't > > infinitely loop anymore given a malformed property list. > > Thanks, but I think we should log the error in *Messages*, because > otherwise the error will go unnoticed. > > > + if (EQ (Fmod (Flength (props), make_number > > (2)), > > + make_number (0))) > > We are on the C level, so it is easier/simpler to do this instead: > > ptrdiff_t seqlen = XFASTINT (Flength (props)); > if (seqlen % 2 == 0) > Fset_text_properties (...); > > More importantly, Flength can signal an error if PROPS is too long, > so > I'm not sure the idea of your patch is 100% correct, because the code > you propose can still signal an error. An alternative would be to > call Fset_text_properties via internal_condition_case_n, like we do > in > safe__call. That makes sense. I added one function to call Fset_text_properties through internal_condition_case_n in the attached revised patch. The error gets caught and safe_eval_handler appends an error message to the *Messages* buffer. The error message is put in *Messages* on the first time only though, subsequent (force-mode-line-update) calls just append nil. I don't know if that's expected for redisplay's internal messaging routines. Thanks for reviewing the patch. -- Jonathan Kyle Mitchell --=-b03UmweOYBPChXbkFA5B Content-Disposition: attachment; filename*0=0001-Call-Fset_text_properties-through-internal_condition.pat; filename*1=ch Content-Type: text/x-patch; name="0001-Call-Fset_text_properties-through-internal_condition.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA2MjFiYzNkZjE5ZWFmMjI1OGM5YTJlYzBjNzIwMDRlYTgzMzZjZTBmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb25hdGhhbiBLeWxlIE1pdGNoZWxsIDxreWxlQGpvbmF0aGFu bWl0Y2hlbGwub3JnPgpEYXRlOiBXZWQsIDQgSnVsIDIwMTggMjI6Mzg6MjkgLTA1MDAKU3ViamVj dDogW1BBVENIXSBDYWxsIEZzZXRfdGV4dF9wcm9wZXJ0aWVzIHRocm91Z2ggaW50ZXJuYWxfY29u ZGl0aW9uX2Nhc2VfbgoKKiB4ZGlzcC5jIChkaXNwbGF5X21vZGVfZWxlbWVudCwgc2FmZV9zZXRf dGV4dF9wcm9wZXJ0aWVzKToKLS0tCiBzcmMveGRpc3AuYyB8IDIxICsrKysrKysrKysrKysrKysr KystLQogMSBmaWxlIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL3hkaXNwLmMgYi9zcmMveGRpc3AuYwppbmRleCA5YjRmZWJkZDYxLi5m YjhmYzkwNWI5IDEwMDY0NAotLS0gYS9zcmMveGRpc3AuYworKysgYi9zcmMveGRpc3AuYwpAQCAt MjM1MTYsNiArMjM1MTYsMTcgQEAgbW92ZV9lbHRfdG9fZnJvbnQgKExpc3BfT2JqZWN0IGVsdCwg TGlzcF9PYmplY3QgbGlzdCkKICAgcmV0dXJuIGxpc3Q7CiB9CiAKKy8qIFN1YnJvdXRpbmUgdG8g Y2FsbCBGc2V0X3RleHRfcHJvcGVydGllcyB0aHJvdWdoCisgICBpbnRlcm5hbF9jb25kaXRpb25f Y2FzZV9uLiAgQVJHUyBhcmUgdGhlIGFyZ3VtZW50cyBvZgorICAgRnNldF90ZXh0X3Byb3BlcnRp ZXMsIGluIG9yZGVyLiAqLworCitzdGF0aWMgTGlzcF9PYmplY3QKK3NhZmVfc2V0X3RleHRfcHJv cGVydGllcyAocHRyZGlmZl90IG5hcmdzLCBMaXNwX09iamVjdCAqYXJncykKK3sKKyAgZWFzc2Vy dCAobmFyZ3MgPT0gNCk7CisgIHJldHVybiBGc2V0X3RleHRfcHJvcGVydGllcyAoYXJnc1swXSwg YXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSk7Cit9CisKIC8qIENvbnRyaWJ1dGUgRUxUIHRvIHRo ZSBtb2RlIGxpbmUgZm9yIHdpbmRvdyBJVC0+dy4gIEhvdyBpdAogICAgdHJhbnNsYXRlcyBpbnRv IHRleHQgZGVwZW5kcyBvbiBpdHMgZGF0YSB0eXBlLgogCkBAIC0yMzYxMCw4ICsyMzYyMSwxNCBA QCBkaXNwbGF5X21vZGVfZWxlbWVudCAoc3RydWN0IGl0ICppdCwgaW50IGRlcHRoLCBpbnQgZmll bGRfd2lkdGgsIGludCBwcmVjaXNpb24sCiAJCQk9IEZkZWxxIChhZWx0LCBtb2RlX2xpbmVfcHJv cHRyYW5zX2FsaXN0KTsKIAogCQkgICAgZWx0ID0gRmNvcHlfc2VxdWVuY2UgKGVsdCk7Ci0JCSAg ICBGc2V0X3RleHRfcHJvcGVydGllcyAobWFrZV9udW1iZXIgKDApLCBGbGVuZ3RoIChlbHQpLAot CQkJCQkgIHByb3BzLCBlbHQpOworCQkgICAgaW50ZXJuYWxfY29uZGl0aW9uX2Nhc2VfbiAoc2Fm ZV9zZXRfdGV4dF9wcm9wZXJ0aWVzLAorCQkJCQkgICAgICAgNCwKKwkJCQkJICAgICAgICgoTGlz cF9PYmplY3QgW10pCisJCQkJCSAgICAgICB7bWFrZV9udW1iZXIgKDApLAorCQkJCQkJICAgRmxl bmd0aCAoZWx0KSwKKwkJCQkJCSAgIHByb3BzLAorCQkJCQkJICAgZWx0fSksCisJCQkJCSAgICAg ICBRdCwgc2FmZV9ldmFsX2hhbmRsZXIpOwogCQkgICAgLyogQWRkIHRoaXMgaXRlbSB0byBtb2Rl X2xpbmVfcHJvcHRyYW5zX2FsaXN0LiAgKi8KIAkJICAgIG1vZGVfbGluZV9wcm9wdHJhbnNfYWxp c3QKIAkJICAgICAgPSBGY29ucyAoRmNvbnMgKGVsdCwgcHJvcHMpLAotLSAKMi4xNy4xCgo= --=-b03UmweOYBPChXbkFA5B--