fix shm objects wait fd and allocation error handling
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Tue, 23 Aug 2011 18:36:16 +0000 (14:36 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Tue, 23 Aug 2011 18:36:16 +0000 (14:36 -0400)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
libringbuffer/shm.c

index 6a77af6462a61d93a3c5c1bfb8fff214f546de62..86e8d9184e3c8a3fb066df69e2808028d790fe74 100644 (file)
@@ -34,7 +34,7 @@ struct shm_object *shm_object_table_append(struct shm_object_table *table,
 
        if (table->allocated_len >= table->size)
                return NULL;
-       obj = &table->objects[table->allocated_len++];
+       obj = &table->objects[table->allocated_len];
 
        /* wait_fd: create pipe */
        ret = pipe(waitfd);
@@ -55,7 +55,7 @@ struct shm_object *shm_object_table_append(struct shm_object_table *table,
                PERROR("fcntl");
                goto error_fcntl;
        }
-       *obj->wait_fd = *waitfd;
+       memcpy(obj->wait_fd, waitfd, sizeof(waitfd));
 
        /* shm_fd: create shm */
 
@@ -98,6 +98,8 @@ struct shm_object *shm_object_table_append(struct shm_object_table *table,
        obj->memory_map = memory_map;
        obj->memory_map_size = memory_map_size;
        obj->allocated_len = 0;
+
+       table->allocated_len++;
        return obj;
 
 error_mmap:
This page took 0.026035 seconds and 4 git commands to generate.