fix(ruby): Fix crash when calculating Message hash values on 64-bit Windows (#8565)
* fix(ruby): Fix crash when calculating Message hash values on 64-bit Windows * Better mapping for values outside the fixnum range * Simpler downcasting of hash values * Fix precedence * Fix bundle on Ruby 2.4
This commit is contained in:
parent
c8389f8ed5
commit
7e3bbeda92
@ -1,3 +1,5 @@
|
||||
source 'https://rubygems.org'
|
||||
|
||||
gemspec
|
||||
|
||||
gem "irb", "~> 1.1", "< 1.2.0" if RUBY_VERSION < "2.5"
|
||||
|
@ -734,7 +734,10 @@ uint64_t Message_Hash(const upb_msg* msg, const upb_msgdef* m, uint64_t seed) {
|
||||
*/
|
||||
static VALUE Message_hash(VALUE _self) {
|
||||
Message* self = ruby_to_Message(_self);
|
||||
return INT2FIX(Message_Hash(self->msg, self->msgdef, 0));
|
||||
uint64_t hash_value = Message_Hash(self->msg, self->msgdef, 0);
|
||||
// RUBY_FIXNUM_MAX should be one less than a power of 2.
|
||||
assert((RUBY_FIXNUM_MAX & (RUBY_FIXNUM_MAX + 1)) == 0);
|
||||
return INT2FIX(hash_value & RUBY_FIXNUM_MAX);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user