Subject: Re: bug#29107: 27.0.50; Infinite recursion in Ruby mode

From: Dmitry Gutov <[email-masked]>
Date: Sat, 2 Jan 2021 04:20:49 +0200

Version: 28.1

Hi Anders,

On 01.11.2017 21:52, Anders Lindgren wrote:
> I just noticed that Ruby mode can go into infinite recursion (or "Lisp 
> nesting exceeds ‘max-lisp-eval-depth’"). I managed to boil it down to 
> the following:
> 
>      Evaluate (setq debug-on-error t)
> 
>      Open a new file, say test.rb
>      Type:
> 
>          func do {
> 
>      And press return.
> 
> In the backtrace, the following is listed over and over again:
> 
>    ruby-smie--indent-to-stmt()
>    ruby-smie-rules(:before "{")
>    smie-indent--rule-1(:before "{" nil nil)
>    smie-indent--rule(:before "{")
>    smie-indent-keyword()
>    run-hook-with-args-until-success(smie-indent-keyword)
>    smie-indent-calculate()
>    smie-indent-virtual()
> 
> It happens in Emacs 25.2 and in a week-old build from the master branch.

Sorry about the long wait, it didn't seem like a critical issue given 
that the code in question was either a typo, or a very weird way to 
write a block. Please correct me if I'm wrong here.

Either way, it should be fixed now in master, commit 0f561ee553.