Project

General

Profile

Actions

Bug #20992

closed

`eval(ascii_encoded_code)` raises EncodingError when multibyte local variable exists

Added by tompng (tomoya ishida) 10 days ago. Updated about 2 hours ago.

Status:
Closed
Assignee:
Target version:
-
ruby -v:
ruby 3.5.0dev (2024-12-28T09:40:37Z master e4ec2128ae) +YJIT +MN +PRISM [arm64-darwin22]
[ruby-core:120443]

Description

#coding: utf-8
α=1
eval '1+2'.encode('ascii')
$ ruby file.rb
file.rb:3:in 'Kernel#eval': invalid symbol in encoding US-ASCII :"\xCE\xB1" (EncodingError)
	from file.rb:3:in '<main>'

Running the file below with LANG=C ruby file.rb will make IRB unresponsive

#coding: utf-8
α=1
binding.irb
$ LANG=C ruby file.rb
From: file.rb @ line 3 :

    1: #coding: utf-8
    2: α=1
 => 3: binding.irb
irb(main):001> 1
<internal:kernel>:168:in 'Kernel#loop': invalid symbol in encoding US-ASCII :"\xCE\xB1" (EncodingError)
	from <internal:prelude>:5:in 'Binding#irb'
	from file.rb:3:in '<main>'
irb(main):002> 

Updated by nobu (Nobuyoshi Nakada) 9 days ago

  • Assignee set to prism
  • Backport changed from 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN to 3.1: DONTNEED, 3.2: DONTNEED, 3.3: DONTNEED, 3.4: REQUIRED
Actions #2

Updated by nobu (Nobuyoshi Nakada) 9 days ago

  • Status changed from Open to Closed

Applied in changeset git|5fec9308320e8b377681ef19b0cd46d53f94e8ac.


[Bug #20992] Test for local variable name encodings

Actions #3

Updated by nobu (Nobuyoshi Nakada) 9 days ago

  • Status changed from Closed to Open
Actions #4

Updated by kddnewton (Kevin Newton) about 2 hours ago

  • Status changed from Open to Closed

Applied in changeset git|1a06bee027d5c5b65ed0aaee76ee0040554d4efd.


Do not intern invalid symbols in eval parse

When the inner code cannot represent the name of the locals in the
outer code, do not bother putting them into the constant pool as
they will not be referenced.

Fixes [Bug #20992]

Co-authored-by: Nobuyoshi Nakada

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0