libdlogutil: minor refactor 34/291734/2
authorMichal Bloch <m.bloch@samsung.com>
Thu, 20 Apr 2023 14:31:03 +0000 (16:31 +0200)
committerMichal Bloch <m.bloch@samsung.com>
Fri, 21 Apr 2023 16:03:27 +0000 (18:03 +0200)
Change-Id: Ib46e7040b9d045f245839aa266562f6dbd1a39c3

src/libdlogutil/logretrieve.c

index 511e2c2..fdabbe4 100644 (file)
@@ -53,6 +53,15 @@ static const struct fd_ops *get_ops_by_buffer(size_t buf_id, int enabled_buffers
        }
 }
 
+static size_t get_required_fdi_capacity(const struct fd_ops *ops_by_buffer[static LOG_ID_MAX])
+{
+       size_t ret = 1; // NULL terminator
+       for (size_t i = 0; i < LOG_ID_MAX; ++i)
+               if (ops_by_buffer[i])
+                       ++ ret;
+       return ret;
+}
+
 int create_initial_fdis(struct fd_info ***fdis, int enabled_buffers, backend_t backend, bool is_compressed_memory, const struct log_config *conf, log_id_t aliased[LOG_ID_MAX])
 {
        assert(fdis);
@@ -60,21 +69,17 @@ int create_initial_fdis(struct fd_info ***fdis, int enabled_buffers, backend_t b
        assert(backend != BACKEND_NONE);
        assert(backend != BACKEND_NULL);
 
-       __attribute__((cleanup(fdi_array_free))) struct fd_info **fdi_ptrs = NULL;
-       int fdi_cnt = 0;
-       int r;
-
        const struct fd_ops *ops_by_buffer[LOG_ID_MAX];
        for (size_t i = 0; i < NELEMS(ops_by_buffer); ++i)
                ops_by_buffer[i] = get_ops_by_buffer(i, enabled_buffers, backend, is_compressed_memory);
 
-       fdi_ptrs = calloc(bit_count(enabled_buffers) + 1 /* NULL terminator */, sizeof *fdi_ptrs);
+       int fdi_cnt = 0;
+       __attribute__((cleanup(fdi_array_free))) struct fd_info **fdi_ptrs = calloc(get_required_fdi_capacity(ops_by_buffer), sizeof *fdi_ptrs);
        if (!fdi_ptrs)
                return TIZEN_ERROR_OUT_OF_MEMORY;
 
        __attribute__ ((cleanup(list_clear_free_contents))) list_head used_paths = NULL;
 
-       fdi_cnt = 0;
        for (int i = 0; i < LOG_ID_MAX; ++i) {
                const struct fd_ops *const ops = ops_by_buffer[i];
                if (!ops)
@@ -84,7 +89,7 @@ int create_initial_fdis(struct fd_info ***fdis, int enabled_buffers, backend_t b
                if (!fdi)
                        return -ENOMEM;
 
-               r = fdi->ops->create(fdi, conf, i, &used_paths, &aliased[i]);
+               int r = fdi->ops->create(fdi, conf, i, &used_paths, &aliased[i]);
                if (r == 0)
                        aliased[i] = i;
                if (r < 0) {