Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

vi-mode `r' crashes by multibyte string #228

Closed
elfham opened this issue Dec 24, 2020 · 1 comment · Fixed by #232
Closed

vi-mode `r' crashes by multibyte string #228

elfham opened this issue Dec 24, 2020 · 1 comment · Fixed by #232

Comments

@elfham
Copy link
Contributor

elfham commented Dec 24, 2020

Description

In vi-mode, `r' command crashes by editing multibyte string.

Steps to Reproduce

Environment:

  • Ruby 2.7.2
    • IRB::VERSION = 1.2.8
    • Reline::VERSION = 0.1.10
  • FreeBSD 12.2-RELEASE-p1
  • PuTTYrv 0.74-ranvis
    • EAW of the terminal is Ambiguous=double (CJK)

Scenario:

Editing line from "あいう" to "あxう".

% irb
irb(main):001:0> "あいう"

The cursor is located at the second character, .

Then type r, x .

Expected:

irb(main):001:0> "あxう"

Actual:

irb(main):001:0> "あTraceback (most recent call last):
        34: from /usr/local/bin/irb:23:in `<main>'
        33: from /usr/local/bin/irb:23:in `load'
        32: from /usr/local/lib/ruby/gems/2.7/gems/irb-1.2.8/exe/irb:11:in `<top (required)>'
        31: from /usr/local/lib/ruby/gems/2.7/gems/irb-1.2.8/lib/irb.rb:400:in `start'
        30: from /usr/local/lib/ruby/gems/2.7/gems/irb-1.2.8/lib/irb.rb:471:in `run'
        29: from /usr/local/lib/ruby/gems/2.7/gems/irb-1.2.8/lib/irb.rb:471:in `catch'
        28: from /usr/local/lib/ruby/gems/2.7/gems/irb-1.2.8/lib/irb.rb:472:in `block in run'
        27: from /usr/local/lib/ruby/gems/2.7/gems/irb-1.2.8/lib/irb.rb:537:in `eval_input'
        26: from /usr/local/lib/ruby/gems/2.7/gems/irb-1.2.8/lib/irb/ruby-lex.rb:165:in `each_top_level_statement'
        25: from /usr/local/lib/ruby/gems/2.7/gems/irb-1.2.8/lib/irb/ruby-lex.rb:165:in `catch'
        24: from /usr/local/lib/ruby/gems/2.7/gems/irb-1.2.8/lib/irb/ruby-lex.rb:166:in `block in each_top_level_statement'
        23: from /usr/local/lib/ruby/gems/2.7/gems/irb-1.2.8/lib/irb/ruby-lex.rb:166:in `loop'
        22: from /usr/local/lib/ruby/gems/2.7/gems/irb-1.2.8/lib/irb/ruby-lex.rb:169:in `block (2 levels) in each_top_level_statement'
        21: from /usr/local/lib/ruby/gems/2.7/gems/irb-1.2.8/lib/irb/ruby-lex.rb:197:in `lex'
        20: from /usr/local/lib/ruby/gems/2.7/gems/irb-1.2.8/lib/irb.rb:518:in `block in eval_input'
        19: from /usr/local/lib/ruby/gems/2.7/gems/irb-1.2.8/lib/irb.rb:720:in `signal_status'
        18: from /usr/local/lib/ruby/gems/2.7/gems/irb-1.2.8/lib/irb.rb:519:in `block (2 levels) in eval_input'
        17: from /usr/local/lib/ruby/gems/2.7/gems/irb-1.2.8/lib/irb/input-method.rb:294:in `gets'
        16: from /usr/local/lib/ruby/2.7/forwardable.rb:235:in `readmultiline'
        15: from /usr/local/lib/ruby/2.7/forwardable.rb:235:in `readmultiline'
        14: from /usr/local/lib/ruby/gems/2.7/gems/reline-0.1.10/lib/reline.rb:176:in `readmultiline'
        13: from /usr/local/lib/ruby/gems/2.7/gems/reline-0.1.10/lib/reline.rb:244:in `inner_readline'
        12: from /usr/local/lib/ruby/gems/2.7/gems/reline-0.1.10/lib/reline.rb:244:in `loop'
        11: from /usr/local/lib/ruby/gems/2.7/gems/reline-0.1.10/lib/reline.rb:246:in `block in inner_readline'
        10: from /usr/local/lib/ruby/gems/2.7/gems/reline-0.1.10/lib/reline.rb:285:in `read_io'
         9: from /usr/local/lib/ruby/gems/2.7/gems/reline-0.1.10/lib/reline.rb:285:in `loop'
         8: from /usr/local/lib/ruby/gems/2.7/gems/reline-0.1.10/lib/reline.rb:331:in `block in read_io'
         7: from /usr/local/lib/ruby/gems/2.7/gems/reline-0.1.10/lib/reline.rb:247:in `block (2 levels) in inner_readline'
         6: from /usr/local/lib/ruby/gems/2.7/gems/reline-0.1.10/lib/reline.rb:247:in `each'
         5: from /usr/local/lib/ruby/gems/2.7/gems/reline-0.1.10/lib/reline.rb:248:in `block (3 levels) in inner_readline'
         4: from /usr/local/lib/ruby/gems/2.7/gems/reline-0.1.10/lib/reline/line_editor.rb:1071:in `input_key'
         3: from /usr/local/lib/ruby/gems/2.7/gems/reline-0.1.10/lib/reline/line_editor.rb:1025:in `normal_char'
         2: from /usr/local/lib/ruby/gems/2.7/gems/reline-0.1.10/lib/reline/line_editor.rb:984:in `process_key'
         1: from /usr/local/lib/ruby/gems/2.7/gems/reline-0.1.10/lib/reline/line_editor.rb:2470:in `block in vi_replace_char'
/usr/local/lib/ruby/gems/2.7/gems/reline-0.1.10/lib/reline/line_editor.rb:2470:in `+': no implicit conversion of nil into String (TypeError)
%

Terminal Emulator

PuTTYrv 0.74-ranvis

aycabta added a commit to aycabta/reline that referenced this issue Dec 24, 2020
@aycabta
Copy link
Member

aycabta commented Dec 24, 2020

Thank you for your great survey results!

matzbot pushed a commit to ruby/ruby that referenced this issue Dec 24, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging a pull request may close this issue.

2 participants