X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=libringbuffer%2Fshm.c;h=873e6e87597311ae9a5cc03c3d1c27a53dae025c;hb=afdf9825400f1b975a98202a3e9dcbec0a572a56;hp=6a77af6462a61d93a3c5c1bfb8fff214f546de62;hpb=5d61a504c6d395914d78f97e82f6fd0fdf0f98a0;p=lttng-ust.git diff --git a/libringbuffer/shm.c b/libringbuffer/shm.c index 6a77af64..873e6e87 100644 --- a/libringbuffer/shm.c +++ b/libringbuffer/shm.c @@ -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; + obj->index = table->allocated_len++; + return obj; error_mmap: @@ -118,7 +120,6 @@ error_fcntl: } } error_pipe: - free(obj); return NULL; }