[ https://issues.apache.org/jira/browse/THRIFT-1183?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Bryan Duxbury closed THRIFT-1183. --------------------------------- Resolution: Fixed Fix Version/s: 0.7 Assignee: Ilya Maykov Ah, you're totally right. I just tested #ord in a ruby 1.8.6 irb without thinking about our extensions. I just committed this patch. > Pure-ruby CompactProtocol raises ArgumentError when deserializing under Ruby > 1.9 > -------------------------------------------------------------------------------- > > Key: THRIFT-1183 > URL: https://issues.apache.org/jira/browse/THRIFT-1183 > Project: Thrift > Issue Type: Bug > Components: Ruby - Library > Affects Versions: 0.6.1 > Environment: OS X 10.6 i686 / Ruby 1.9.2 > Reporter: Ilya Maykov > Assignee: Ilya Maykov > Fix For: 0.7 > > Attachments: patch-THRIFT-1183.txt > > > While testing my fix for THRIFT-1182 with various combinations of > native/non-native ruby and binary/compact protocols, I stumbled upon a bug in > the pure-ruby implementation of CompactProtocol. > In lib/thrift/protocol/compact_protocol.rb line 306: > ... > val = dat[0] > if (val > 0x7f) > ... > Here, dat is a string, so dat[0] returns a Fixnum in Ruby 1.8.7 but a string > of size 1 in Ruby 1.9.2. The conditional compares dat[0] with 0x7f, which > raises the following error in 1.9.2: > /Users/ilyam/.rvm/gems/ruby-1.9.2-p180/gems/thrift-0.6.0/lib/thrift/protocol/compact_protocol.rb:307:in > `>': comparison of String with 127 failed (ArgumentError) > from > /Users/ilyam/.rvm/gems/ruby-1.9.2-p180/gems/thrift-0.6.0/lib/thrift/protocol/compact_protocol.rb:307:in > `read_byte' > from > /Users/ilyam/.rvm/gems/ruby-1.9.2-p180/gems/thrift-0.6.0/lib/thrift/protocol/compact_protocol.rb:243:in > `read_field_begin' > from > /Users/ilyam/.rvm/gems/ruby-1.9.2-p180/gems/thrift-0.6.0/lib/thrift/struct.rb:86:in > `block in read' > from > /Users/ilyam/.rvm/gems/ruby-1.9.2-p180/gems/thrift-0.6.0/lib/thrift/struct.rb:85:in > `loop' > from > /Users/ilyam/.rvm/gems/ruby-1.9.2-p180/gems/thrift-0.6.0/lib/thrift/struct.rb:85:in > `read' > from > /Users/ilyam/.rvm/gems/ruby-1.9.2-p180/gems/thrift-0.6.0/lib/thrift/serializer/deserializer.rb:29:in > `deserialize' > The solution is a one-line fix, patch will be attached shortly. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira