|
|
|
@ -63,17 +63,15 @@ void byte_buffer_to_string(grpc_byte_buffer *buffer, char **out_string, |
|
|
|
|
*out_length = 0; |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
size_t length = grpc_byte_buffer_length(buffer); |
|
|
|
|
char *string = ecalloc(length + 1, sizeof(char)); |
|
|
|
|
size_t offset = 0; |
|
|
|
|
|
|
|
|
|
grpc_byte_buffer_reader reader; |
|
|
|
|
grpc_byte_buffer_reader_init(&reader, buffer); |
|
|
|
|
gpr_slice next; |
|
|
|
|
while (grpc_byte_buffer_reader_next(&reader, &next) != 0) { |
|
|
|
|
memcpy(string + offset, GPR_SLICE_START_PTR(next), GPR_SLICE_LENGTH(next)); |
|
|
|
|
offset += GPR_SLICE_LENGTH(next); |
|
|
|
|
gpr_slice_unref(next); |
|
|
|
|
} |
|
|
|
|
gpr_slice slice = grpc_byte_buffer_reader_readall(&reader); |
|
|
|
|
size_t length = GPR_SLICE_LENGTH(slice); |
|
|
|
|
char *string = ecalloc(length + 1, sizeof(char)); |
|
|
|
|
memcpy(string, GPR_SLICE_START_PTR(slice), length); |
|
|
|
|
gpr_slice_unref(slice); |
|
|
|
|
|
|
|
|
|
*out_string = string; |
|
|
|
|
*out_length = length; |
|
|
|
|
} |
|
|
|
|