aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/surface/call.c
diff options
context:
space:
mode:
authorGravatar David Garcia Quintas <dgq@google.com>2015-06-22 14:26:40 -0700
committerGravatar David Garcia Quintas <dgq@google.com>2015-06-22 14:30:12 -0700
commit51cd7d72931006ea83e8c1cb9334fac121fc4a5b (patch)
tree3eeba326a2df2561eb5d3b41a574d986b46b8599 /src/core/surface/call.c
parent04b0383d23e65482ba98b190fb802d237a5fe32a (diff)
Fixed warning while parsing compression enum bytes.
Diffstat (limited to 'src/core/surface/call.c')
-rw-r--r--src/core/surface/call.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/core/surface/call.c b/src/core/surface/call.c
index 6e2714db0b..dd8eaa943e 100644
--- a/src/core/surface/call.c
+++ b/src/core/surface/call.c
@@ -1190,9 +1190,14 @@ static gpr_uint32 decode_compression(grpc_mdelem *md) {
if (user_data) {
clevel = ((grpc_compression_level)(gpr_intptr)user_data) - COMPRESS_OFFSET;
} else {
- if (!gpr_parse_bytes_to_uint32(grpc_mdstr_as_c_string(md->value),
+ gpr_uint32 parsed_clevel_bytes;
+ if (gpr_parse_bytes_to_uint32(grpc_mdstr_as_c_string(md->value),
GPR_SLICE_LENGTH(md->value->slice),
- &clevel)) {
+ &parsed_clevel_bytes)) {
+ /* the following cast is safe, as a gpr_uint32 should be able to hold all
+ * possible values of the grpc_compression_level enum */
+ clevel = (grpc_compression_level) parsed_clevel_bytes;
+ } else {
clevel = GRPC_COMPRESS_LEVEL_NONE; /* could not parse, no compression */
}
grpc_mdelem_set_user_data(md, destroy_compression,