diff options
author | 2016-12-07 17:30:21 -0800 | |
---|---|---|
committer | 2016-12-07 17:30:21 -0800 | |
commit | 5efdf3ca26303df055a17de5bd0265378d663ddc (patch) | |
tree | 57039c5df9fe1885903df59f6cfa5e149dc38974 | |
parent | 3153e5af0cda0755d927f281f6561eb52279ced1 (diff) |
Fix casting error
-rw-r--r-- | src/core/lib/transport/static_metadata.c | 7 | ||||
-rwxr-xr-x | tools/codegen/core/gen_static_metadata.py | 7 |
2 files changed, 12 insertions, 2 deletions
diff --git a/src/core/lib/transport/static_metadata.c b/src/core/lib/transport/static_metadata.c index 807adfef54..5adc3216c9 100644 --- a/src/core/lib/transport/static_metadata.c +++ b/src/core/lib/transport/static_metadata.c @@ -440,7 +440,12 @@ static uint32_t elems_phash(uint32_t i) { i -= 42; uint32_t x = i % 96; uint32_t y = i / 96; - return y < GPR_ARRAY_SIZE(elems_r) ? x + (uint32_t)elems_r[y] : 0; + uint32_t h = x; + if (y < GPR_ARRAY_SIZE(elems_r)) { + uint32_t delta = (uint32_t)elems_r[y]; + h += delta; + } + return h; } static const uint16_t elem_keys[] = { diff --git a/tools/codegen/core/gen_static_metadata.py b/tools/codegen/core/gen_static_metadata.py index 1a2911cd04..0374cf75a1 100755 --- a/tools/codegen/core/gen_static_metadata.py +++ b/tools/codegen/core/gen_static_metadata.py @@ -424,7 +424,12 @@ static uint32_t %(name)s_phash(uint32_t i) { i %(offset_sign)s= %(offset)d; uint32_t x = i %% %(t)d; uint32_t y = i / %(t)d; - return y < GPR_ARRAY_SIZE(%(name)s_r) ? x + (uint32_t)%(name)s_r[y] : 0; + uint32_t h = x; + if (y < GPR_ARRAY_SIZE(%(name)s_r)) { + uint32_t delta = (uint32_t)%(name)s_r[y]; + h += delta; + } + return h; } """ % { 'name': name, |