From 832ca8c1b2e8009fb09335405953581e8c0082d8 Mon Sep 17 00:00:00 2001 From: Ashley Milsted Date: Mon, 19 Jun 2023 14:06:30 -0700 Subject: [PATCH 1/2] Avoid eval in uparse in simple cases --- src/user.jl | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/user.jl b/src/user.jl index 8df784c9..2c0af8b8 100644 --- a/src/user.jl +++ b/src/user.jl @@ -659,7 +659,10 @@ julia> uparse("1.0*dB") """ function uparse(str; unit_context=Unitful) ex = Meta.parse(str) - eval(lookup_units(unit_context, ex)) + # Since eval breaks precompilation, avoid it in simple cases + isa(ex, Symbol) && return lookup_units(unit_context, ex) + isa(ex, Number) && return lookup_units(unit_context, ex) + return eval(ex_processed) end const allowed_funcs = [:*, :/, :^, :sqrt, :√, :+, :-, ://] From d330ddc38b0d2fb927765f85f8428038192f196b Mon Sep 17 00:00:00 2001 From: Ashley Milsted Date: Thu, 22 Jun 2023 09:24:14 -0700 Subject: [PATCH 2/2] Oops. --- src/user.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/user.jl b/src/user.jl index 2c0af8b8..b130927c 100644 --- a/src/user.jl +++ b/src/user.jl @@ -662,7 +662,7 @@ function uparse(str; unit_context=Unitful) # Since eval breaks precompilation, avoid it in simple cases isa(ex, Symbol) && return lookup_units(unit_context, ex) isa(ex, Number) && return lookup_units(unit_context, ex) - return eval(ex_processed) + return eval(lookup_units(unit_context, ex)) end const allowed_funcs = [:*, :/, :^, :sqrt, :√, :+, :-, ://]