ucx/buffer.c

changeset 61
fb07a0ab9a17
parent 60
abae4669fba7
child 62
6814aea8462d
     1.1 --- a/ucx/buffer.c	Wed Oct 10 09:54:57 2012 +0200
     1.2 +++ b/ucx/buffer.c	Wed Oct 10 10:04:01 2012 +0200
     1.3 @@ -7,12 +7,13 @@
     1.4      void *space;
     1.5      off_t pos;
     1.6      size_t length;
     1.7 -    _Bool autofree;
     1.8 +    int flags;
     1.9  };
    1.10  
    1.11 -UcxBuffer *ucx_buffer_new(void *space, size_t length) {
    1.12 +UcxBuffer *ucx_buffer_new(void *space, size_t length, int flags) {
    1.13      UcxBuffer *buffer = (UcxBuffer*) malloc(sizeof(UcxBuffer));
    1.14      if (buffer) {
    1.15 +        buffer->flags = flags;
    1.16          if (!space) {
    1.17              buffer->space = malloc(length);
    1.18              if (!buffer->space) {
    1.19 @@ -20,10 +21,9 @@
    1.20                  return NULL;
    1.21              }
    1.22              memset(buffer->space, 0, length);
    1.23 -            buffer->autofree = 1;
    1.24 +            buffer->flags |= UCX_BUFFER_AUTOFREE;
    1.25          } else {
    1.26              buffer->space = space;
    1.27 -            buffer->autofree = 0;
    1.28          }
    1.29          buffer->length = length;
    1.30  
    1.31 @@ -34,7 +34,7 @@
    1.32  }
    1.33  
    1.34  void ucx_buffer_free(UcxBuffer *buffer) {
    1.35 -    if (buffer->autofree) {
    1.36 +    if ((buffer->flags & UCX_BUFFER_AUTOFREE) > 0) {
    1.37          free(buffer->space);
    1.38      }
    1.39      free(buffer);

mercurial