ffi-icu icon indicating copy to clipboard operation
ffi-icu copied to clipboard

`U_MEMORY_ALLOCATION_ERROR` when using `:pattern_rule_based` in `ICU::NumberFormatting`

Open codealchemy opened this issue 2 years ago • 1 comments

Seen on both amd64 and arm64 (M1 macOS) machines.

First seen on Ruby 3.2 (Ubuntu Jammy with ICU 71.1) and reproduced on an M1 with Ruby 3.2, 3.1, and 3.0 using ICU 70.2.

To reproduce:

irb(main):002:0> require 'ffi-icu'
=> true
irb(main):003:0> ICU::NumberFormatting.create('fr', :pattern_rule_based)
/Users/primary_user/.rbenv/versions/3.0.4/lib/ruby/gems/3.0.0/gems/ffi-icu-0.5.0/lib/ffi-icu/lib.rb:138:in `check_error': U_MEMORY_ALLOCATION_ERROR (ICU::Error)
        from /Users/primary_user/.rbenv/versions/3.0.4/lib/ruby/gems/3.0.0/gems/ffi-icu-0.5.0/lib/ffi-icu/number_formatting.rb:50:in `make_formatter'
        from /Users/primary_user/.rbenv/versions/3.0.4/lib/ruby/gems/3.0.0/gems/ffi-icu-0.5.0/lib/ffi-icu/number_formatting.rb:57:in `initialize'
        from /Users/primary_user/.rbenv/versions/3.0.4/lib/ruby/gems/3.0.0/gems/ffi-icu-0.5.0/lib/ffi-icu/number_formatting.rb:12:in `new'
        from /Users/primary_user/.rbenv/versions/3.0.4/lib/ruby/gems/3.0.0/gems/ffi-icu-0.5.0/lib/ffi-icu/number_formatting.rb:12:in `create'
        from (irb):3:in `<main>'
        from /Users/primary_user/.rbenv/versions/3.0.4/lib/ruby/gems/3.0.0/gems/irb-1.6.2/exe/irb:11:in `<top (required)>'
        from /Users/primary_user/.rbenv/versions/3.0.4/bin/irb:25:in `load'
        from /Users/primary_user/.rbenv/versions/3.0.4/bin/irb:25:in `<main>'
irb(main):004:0> ICU::NumberFormatting.create('en', :pattern_rule_based)
/Users/primary_user/.rbenv/versions/3.0.4/lib/ruby/gems/3.0.0/gems/ffi-icu-0.5.0/lib/ffi-icu/lib.rb:138:in `check_error': U_MEMORY_ALLOCATION_ERROR (ICU::Error)                                                             
        from /Users/primary_user/.rbenv/versions/3.0.4/lib/ruby/gems/3.0.0/gems/ffi-icu-0.5.0/lib/ffi-icu/number_formatting.rb:50:in `make_formatter'
        from /Users/primary_user/.rbenv/versions/3.0.4/lib/ruby/gems/3.0.0/gems/ffi-icu-0.5.0/lib/ffi-icu/number_formatting.rb:57:in `initialize'
        from /Users/primary_user/.rbenv/versions/3.0.4/lib/ruby/gems/3.0.0/gems/ffi-icu-0.5.0/lib/ffi-icu/number_formatting.rb:12:in `new'
        from /Users/primary_user/.rbenv/versions/3.0.4/lib/ruby/gems/3.0.0/gems/ffi-icu-0.5.0/lib/ffi-icu/number_formatting.rb:12:in `create'
        from (irb):4:in `<main>'
        from /Users/primary_user/.rbenv/versions/3.0.4/lib/ruby/gems/3.0.0/gems/irb-1.6.2/exe/irb:11:in `<top (required)>'
        from /Users/primary_user/.rbenv/versions/3.0.4/bin/irb:25:in `load'
        from /Users/primary_user/.rbenv/versions/3.0.4/bin/irb:25:in `<main>'

codealchemy avatar May 19 '23 00:05 codealchemy

I would support deprecate the use of unum_open and use unumf_openForSkeletonAndLocale. ICU unumf_openForSkeletonAndLocale is stable since ICU 62 (2018-06-20). So supporting the "skeleton" instead of extending the support around unum_open.

erickguan avatar Oct 12 '24 15:10 erickguan