31 free(buffer->space); |
31 free(buffer->space); |
32 } |
32 } |
33 free(buffer); |
33 free(buffer); |
34 } |
34 } |
35 |
35 |
36 UcxBuffer *ucx_buffer_extract( |
36 UcxBuffer *restrict ucx_buffer_extract( |
37 UcxBuffer *src, size_t start, size_t length, int flags) { |
37 UcxBuffer *restrict src, size_t start, size_t length, int flags) { |
38 if (length == 0) { |
38 if (length == 0) { |
39 length = src->size - start; |
39 length = src->size - start; |
40 } |
40 } |
41 if (start+length > src->size) { |
41 if (start+length > src->size) { |
42 return NULL; |
42 return NULL; |
43 } |
43 } |
44 |
44 |
45 UcxBuffer *dst = (UcxBuffer*) malloc(sizeof(UcxBuffer)); |
45 UcxBuffer *restrict dst = (UcxBuffer*) malloc(sizeof(UcxBuffer)); |
46 if (dst) { |
46 if (dst) { |
47 dst->space = malloc(length); |
47 dst->space = malloc(length); |
48 if (!dst->space) { |
48 if (!dst->space) { |
49 free(dst); |
49 free(dst); |
50 return NULL; |
50 return NULL; |