|  | @@ -194,7 +194,7 @@ gpr_slice gpr_slice_malloc(size_t length) {
 | 
	
		
			
				|  |  |    } else {
 | 
	
		
			
				|  |  |      /* small slice: just inline the data */
 | 
	
		
			
				|  |  |      slice.refcount = NULL;
 | 
	
		
			
				|  |  | -    slice.data.inlined.length = length;
 | 
	
		
			
				|  |  | +    slice.data.inlined.length = (gpr_uint8)length;
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    return slice;
 | 
	
		
			
				|  |  |  }
 | 
	
	
		
			
				|  | @@ -202,11 +202,11 @@ gpr_slice gpr_slice_malloc(size_t length) {
 | 
	
		
			
				|  |  |  gpr_slice gpr_slice_sub_no_ref(gpr_slice source, size_t begin, size_t end) {
 | 
	
		
			
				|  |  |    gpr_slice subset;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +  GPR_ASSERT(end >= begin);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    if (source.refcount) {
 | 
	
		
			
				|  |  |      /* Enforce preconditions */
 | 
	
		
			
				|  |  | -    GPR_ASSERT(source.data.refcounted.length >= begin);
 | 
	
		
			
				|  |  |      GPR_ASSERT(source.data.refcounted.length >= end);
 | 
	
		
			
				|  |  | -    GPR_ASSERT(end >= begin);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /* Build the result */
 | 
	
		
			
				|  |  |      subset.refcount = source.refcount;
 | 
	
	
		
			
				|  | @@ -214,8 +214,10 @@ gpr_slice gpr_slice_sub_no_ref(gpr_slice source, size_t begin, size_t end) {
 | 
	
		
			
				|  |  |      subset.data.refcounted.bytes = source.data.refcounted.bytes + begin;
 | 
	
		
			
				|  |  |      subset.data.refcounted.length = end - begin;
 | 
	
		
			
				|  |  |    } else {
 | 
	
		
			
				|  |  | +    /* Enforce preconditions */
 | 
	
		
			
				|  |  | +    GPR_ASSERT(source.data.inlined.length >= end);
 | 
	
		
			
				|  |  |      subset.refcount = NULL;
 | 
	
		
			
				|  |  | -    subset.data.inlined.length = end - begin;
 | 
	
		
			
				|  |  | +    subset.data.inlined.length = (gpr_uint8)(end - begin);
 | 
	
		
			
				|  |  |      memcpy(subset.data.inlined.bytes, source.data.inlined.bytes + begin,
 | 
	
		
			
				|  |  |             end - begin);
 | 
	
		
			
				|  |  |    }
 | 
	
	
		
			
				|  | @@ -227,7 +229,7 @@ gpr_slice gpr_slice_sub(gpr_slice source, size_t begin, size_t end) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    if (end - begin <= sizeof(subset.data.inlined.bytes)) {
 | 
	
		
			
				|  |  |      subset.refcount = NULL;
 | 
	
		
			
				|  |  | -    subset.data.inlined.length = end - begin;
 | 
	
		
			
				|  |  | +    subset.data.inlined.length = (gpr_uint8)(end - begin);
 | 
	
		
			
				|  |  |      memcpy(subset.data.inlined.bytes, GPR_SLICE_START_PTR(source) + begin,
 | 
	
		
			
				|  |  |             end - begin);
 | 
	
		
			
				|  |  |    } else {
 | 
	
	
		
			
				|  | @@ -245,17 +247,17 @@ gpr_slice gpr_slice_split_tail(gpr_slice *source, size_t split) {
 | 
	
		
			
				|  |  |      /* inlined data, copy it out */
 | 
	
		
			
				|  |  |      GPR_ASSERT(source->data.inlined.length >= split);
 | 
	
		
			
				|  |  |      tail.refcount = NULL;
 | 
	
		
			
				|  |  | -    tail.data.inlined.length = source->data.inlined.length - split;
 | 
	
		
			
				|  |  | +    tail.data.inlined.length = (gpr_uint8)(source->data.inlined.length - split);
 | 
	
		
			
				|  |  |      memcpy(tail.data.inlined.bytes, source->data.inlined.bytes + split,
 | 
	
		
			
				|  |  |             tail.data.inlined.length);
 | 
	
		
			
				|  |  | -    source->data.inlined.length = split;
 | 
	
		
			
				|  |  | +    source->data.inlined.length = (gpr_uint8)split;
 | 
	
		
			
				|  |  |    } else {
 | 
	
		
			
				|  |  |      size_t tail_length = source->data.refcounted.length - split;
 | 
	
		
			
				|  |  |      GPR_ASSERT(source->data.refcounted.length >= split);
 | 
	
		
			
				|  |  |      if (tail_length < sizeof(tail.data.inlined.bytes)) {
 | 
	
		
			
				|  |  |        /* Copy out the bytes - it'll be cheaper than refcounting */
 | 
	
		
			
				|  |  |        tail.refcount = NULL;
 | 
	
		
			
				|  |  | -      tail.data.inlined.length = tail_length;
 | 
	
		
			
				|  |  | +      tail.data.inlined.length = (gpr_uint8)tail_length;
 | 
	
		
			
				|  |  |        memcpy(tail.data.inlined.bytes, source->data.refcounted.bytes + split,
 | 
	
		
			
				|  |  |               tail_length);
 | 
	
		
			
				|  |  |      } else {
 | 
	
	
		
			
				|  | @@ -280,16 +282,16 @@ gpr_slice gpr_slice_split_head(gpr_slice *source, size_t split) {
 | 
	
		
			
				|  |  |      GPR_ASSERT(source->data.inlined.length >= split);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      head.refcount = NULL;
 | 
	
		
			
				|  |  | -    head.data.inlined.length = split;
 | 
	
		
			
				|  |  | +    head.data.inlined.length = (gpr_uint8)split;
 | 
	
		
			
				|  |  |      memcpy(head.data.inlined.bytes, source->data.inlined.bytes, split);
 | 
	
		
			
				|  |  | -    source->data.inlined.length -= split;
 | 
	
		
			
				|  |  | +    source->data.inlined.length = (gpr_uint8)(source->data.inlined.length - split);
 | 
	
		
			
				|  |  |      memmove(source->data.inlined.bytes, source->data.inlined.bytes + split,
 | 
	
		
			
				|  |  |              source->data.inlined.length);
 | 
	
		
			
				|  |  |    } else if (split < sizeof(head.data.inlined.bytes)) {
 | 
	
		
			
				|  |  |      GPR_ASSERT(source->data.refcounted.length >= split);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      head.refcount = NULL;
 | 
	
		
			
				|  |  | -    head.data.inlined.length = split;
 | 
	
		
			
				|  |  | +    head.data.inlined.length = (gpr_uint8)split;
 | 
	
		
			
				|  |  |      memcpy(head.data.inlined.bytes, source->data.refcounted.bytes, split);
 | 
	
		
			
				|  |  |      source->data.refcounted.bytes += split;
 | 
	
		
			
				|  |  |      source->data.refcounted.length -= split;
 | 
	
	
		
			
				|  | @@ -311,7 +313,7 @@ gpr_slice gpr_slice_split_head(gpr_slice *source, size_t split) {
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  int gpr_slice_cmp(gpr_slice a, gpr_slice b) {
 | 
	
		
			
				|  |  | -  int d = GPR_SLICE_LENGTH(a) - GPR_SLICE_LENGTH(b);
 | 
	
		
			
				|  |  | +  int d = (int)(GPR_SLICE_LENGTH(a) - GPR_SLICE_LENGTH(b));
 | 
	
		
			
				|  |  |    if (d != 0) return d;
 | 
	
		
			
				|  |  |    return memcmp(GPR_SLICE_START_PTR(a), GPR_SLICE_START_PTR(b),
 | 
	
		
			
				|  |  |                  GPR_SLICE_LENGTH(a));
 | 
	
	
		
			
				|  | @@ -319,7 +321,7 @@ int gpr_slice_cmp(gpr_slice a, gpr_slice b) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  int gpr_slice_str_cmp(gpr_slice a, const char *b) {
 | 
	
		
			
				|  |  |    size_t b_length = strlen(b);
 | 
	
		
			
				|  |  | -  int d = GPR_SLICE_LENGTH(a) - b_length;
 | 
	
		
			
				|  |  | +  int d = (int)(GPR_SLICE_LENGTH(a) - b_length);
 | 
	
		
			
				|  |  |    if (d != 0) return d;
 | 
	
		
			
				|  |  |    return memcmp(GPR_SLICE_START_PTR(a), b, b_length);
 | 
	
		
			
				|  |  |  }
 |