Project

General

Profile

Bug #11609

Updated by guilhermereiscampos (Guilherme Reis Campos) over 8 years ago

I found an edge case of Dir.glob that don't work    as i was expecting, and as my shell works. properly. 

 It may happens on every not work in any 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. expansion (that works). 

 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/}}{} 
 ~~~ 

 I've made a pull request with a possible solution: https://github.com/ruby/ruby/pull/1061

Back