Actions
Bug #11609
closedDir.glob brace expansion possible edge case
Description
I found an edge case of Dir.glob that don't work as i was expecting, and as my shell works.
It may happens on every version. I discovered it after spelunking through: ruby_brace_expand function on dir.c (https://github.com/ruby/ruby/blob/trunk/dir.c#L2030) (as you may look: if you add lots of '}' the nest variable won't get to 0 it will be less than zero, so it would not get into the if ( lbrace && rbrace) that parses the glob, that's the clue i have.).
Below, the output of the test script and a zsh glob expansion.
output:
➜ test-ruby ruby test_dir.rb
expected: ["/private/var/folders/t6/bd6y26k14wb3y25xj3m2mc700000gn/T/__test_dir__20151021-45314-1u78o68/}}{}", "/private/var/folders/t6/bd6y26k14wb3y25xj3m2mc700000gn/T/__test_dir__20151021-45314-1u78o68/}}a"]
got: []
➜ test-ruby ls /private/var/folders/t6/bd6y26k14wb3y25xj3m2mc700000gn/T/__test_dir__20151021-45314-1u78o68/}}{\{\},a}
/private/var/folders/t6/bd6y26k14wb3y25xj3m2mc700000gn/T/__test_dir__20151021-45314-1u78o68/}}a
/private/var/folders/t6/bd6y26k14wb3y25xj3m2mc700000gn/T/__test_dir__20151021-45314-1u78o68/}}{}
Files
Updated by guilhermereiscampos (Guilherme Reis Campos) about 9 years ago
- Subject changed from Dir.glob brace expansion edge case that don't work properly to Dir.glob brace expansion possible edge case
Updated by guilhermereiscampos (Guilherme Reis Campos) about 9 years ago
- Description updated (diff)
Updated by nobu (Nobuyoshi Nakada) about 9 years ago
- Status changed from Open to Closed
Applied in changeset r52212.
dir.c: glob brace expansion [Fix GH-1061]
- dir.c (ruby_brace_expand): glob brace expansion edge case fix.
When there are closing braces '}' before a open brace '{' it
must be ignored and considered as literal.
[ruby-core:71138] [Bug #11609]
Actions
Like0
Like0Like0Like0