diff --git a/src/box/alter.cc b/src/box/alter.cc index 63d75c772273a82be59c97dea6c5e7e73d4cb3cd..cc390443396646afd360210a7096f088dba1a14c 100644 --- a/src/box/alter.cc +++ b/src/box/alter.cc @@ -1505,7 +1505,7 @@ class RebuildFuncIndex: public RebuildIndex static struct index_def * func_index_def_new(struct index_def *index_def, struct func *func) { - struct index_def *new_index_def = index_def_dup_xc(index_def); + struct index_def *new_index_def = index_def_dup(index_def); index_def_set_func(new_index_def, func); return new_index_def; } diff --git a/src/box/index.cc b/src/box/index.cc index e8f41cdb9eb4d53d1d59c2d901eb0d150ee202ae..d7164f45bed946f16bf96d610ee0d115963fad8a 100644 --- a/src/box/index.cc +++ b/src/box/index.cc @@ -772,14 +772,11 @@ iterator_delete(struct iterator *it) it->free(it); } -int +void index_create(struct index *index, struct engine *engine, const struct index_vtab *vtab, struct index_def *def) { def = index_def_dup(def); - if (def == NULL) - return -1; - index->vtab = vtab; index->engine = engine; index->def = def; @@ -790,7 +787,6 @@ index_create(struct index *index, struct engine *engine, /* Unusable until set to proper value during space creation. */ index->dense_id = UINT32_MAX; rlist_create(&index->read_gaps); - return 0; } void @@ -808,17 +804,14 @@ index_delete(struct index *index) index_def_delete(def); } -int +void index_read_view_create(struct index_read_view *rv, const struct index_read_view_vtab *vtab, struct index_def *def) { rv->vtab = vtab; rv->def = index_def_dup(def); - if (rv->def == NULL) - return -1; rv->space = NULL; - return 0; } void diff --git a/src/box/index.h b/src/box/index.h index f31e2ba81565e0c646c626481bdcebd9101d1b32..22d3799899a0e2126b9c21918108ee04a41ebbbe 100644 --- a/src/box/index.h +++ b/src/box/index.h @@ -837,7 +837,7 @@ replace_check_dup(struct tuple *old_tuple, struct tuple *dup_tuple, * Initialize an index instance. * Note, this function copies the given index definition. */ -int +void index_create(struct index *index, struct engine *engine, const struct index_vtab *vtab, struct index_def *def); @@ -1042,7 +1042,7 @@ index_end_build(struct index *index) * Initialize an index read view instance. * Note, this function copies the given index definition. */ -int +void index_read_view_create(struct index_read_view *rv, const struct index_read_view_vtab *vtab, struct index_def *def); diff --git a/src/box/index_def.c b/src/box/index_def.c index 6c136db5249439eb9ddede269ec1f4c2a808eba4..386c46cce27b50b96a1c7651fb2ae105124d1562 100644 --- a/src/box/index_def.c +++ b/src/box/index_def.c @@ -122,32 +122,16 @@ index_def_new(uint32_t space_id, uint32_t iid, const char *name, struct index_def * index_def_dup(const struct index_def *def) { - struct index_def *dup = (struct index_def *) malloc(sizeof(*dup)); - if (dup == NULL) { - diag_set(OutOfMemory, sizeof(*dup), "malloc", - "struct index_def"); - return NULL; - } + struct index_def *dup = xmalloc(sizeof(*dup)); *dup = *def; - dup->name = strdup(def->name); - if (dup->name == NULL) { - free(dup); - diag_set(OutOfMemory, strlen(def->name) + 1, "malloc", - "index_def name"); - return NULL; - } + dup->name = xstrdup(def->name); dup->key_def = key_def_dup(def->key_def); dup->cmp_def = key_def_dup(def->cmp_def); dup->pk_def = key_def_dup(def->pk_def); rlist_create(&dup->link); dup->opts = def->opts; - if (def->opts.stat != NULL) { + if (def->opts.stat != NULL) dup->opts.stat = index_stat_dup(def->opts.stat); - if (dup->opts.stat == NULL) { - index_def_delete(dup); - return NULL; - } - } return dup; } @@ -178,11 +162,7 @@ index_stat_dup(const struct index_stat *src) { size_t size = index_stat_sizeof(src->samples, src->sample_count, src->sample_field_count); - struct index_stat *dup = (struct index_stat *) malloc(size); - if (dup == NULL) { - diag_set(OutOfMemory, size, "malloc", "index stat"); - return NULL; - } + struct index_stat *dup = xmalloc(size); memcpy(dup, src, size); uint32_t array_size = src->sample_field_count * sizeof(uint32_t); uint32_t stat1_offset = sizeof(struct index_stat); diff --git a/src/box/index_def.h b/src/box/index_def.h index ca0681713d9e5def23fadd4fd9ef4b4443314030..8e3eadd609ff14775f1baf05e4d0dcd0cd2964c3 100644 --- a/src/box/index_def.h +++ b/src/box/index_def.h @@ -294,7 +294,7 @@ index_stat_sizeof(const struct index_sample *samples, uint32_t sample_count, * To understand memory layout see index_stat_sizeof() function. * * @param src Stat to duplicate. - * @retval Copy of the @src or NULL on OOM. + * @retval Copy of the @src. */ struct index_stat * index_stat_dup(const struct index_stat *src); @@ -418,23 +418,6 @@ index_def_check(struct index_def *index_def, const char *space_name); #if defined(__cplusplus) } /* extern "C" */ - -static inline struct index_def * -index_def_dup_xc(const struct index_def *def) -{ - struct index_def *ret = index_def_dup(def); - if (ret == NULL) - diag_raise(); - return ret; -} - -static inline void -index_def_check_xc(struct index_def *index_def, const char *space_name) -{ - if (index_def_check(index_def, space_name) != 0) - diag_raise(); -} - #endif /* defined(__cplusplus) */ #endif /* TARANTOOL_BOX_INDEX_DEF_H_INCLUDED */ diff --git a/src/box/memtx_bitset.cc b/src/box/memtx_bitset.cc index 375eafae7d631378af5addefaa408140f1f930e5..7aa40daaeaa874d6d573088eef5044016687b95a 100644 --- a/src/box/memtx_bitset.cc +++ b/src/box/memtx_bitset.cc @@ -529,17 +529,9 @@ memtx_bitset_index_new(struct memtx_engine *memtx, struct index_def *def) assert(!def->opts.is_unique); struct memtx_bitset_index *index = - (struct memtx_bitset_index *)calloc(1, sizeof(*index)); - if (index == NULL) { - diag_set(OutOfMemory, sizeof(*index), - "malloc", "struct memtx_bitset_index"); - return NULL; - } - if (index_create(&index->base, (struct engine *)memtx, - &memtx_bitset_index_vtab, def) != 0) { - free(index); - return NULL; - } + (struct memtx_bitset_index *)xcalloc(1, sizeof(*index)); + index_create(&index->base, (struct engine *)memtx, + &memtx_bitset_index_vtab, def); #ifndef OLD_GOOD_BITSET index->spare_id = SPARE_ID_END; diff --git a/src/box/memtx_hash.cc b/src/box/memtx_hash.cc index aed094f15698e58076ada36a0ebc562e777d096c..bc02721a8bab15dfbf7cc9fe7ab6644cb23aa268 100644 --- a/src/box/memtx_hash.cc +++ b/src/box/memtx_hash.cc @@ -647,10 +647,7 @@ memtx_hash_index_create_read_view(struct index *base) struct memtx_hash_index *index = (struct memtx_hash_index *)base; struct hash_read_view *rv = (struct hash_read_view *)xmalloc(sizeof(*rv)); - if (index_read_view_create(&rv->base, &vtab, base->def) != 0) { - free(rv); - return NULL; - } + index_read_view_create(&rv->base, &vtab, base->def); struct space *space = space_by_id(base->def->space_id); assert(space != NULL); memtx_tx_snapshot_cleaner_create(&rv->cleaner, space); @@ -695,17 +692,9 @@ struct index * memtx_hash_index_new(struct memtx_engine *memtx, struct index_def *def) { struct memtx_hash_index *index = - (struct memtx_hash_index *)calloc(1, sizeof(*index)); - if (index == NULL) { - diag_set(OutOfMemory, sizeof(*index), - "malloc", "struct memtx_hash_index"); - return NULL; - } - if (index_create(&index->base, (struct engine *)memtx, - &memtx_hash_index_vtab, def) != 0) { - free(index); - return NULL; - } + (struct memtx_hash_index *)xcalloc(1, sizeof(*index)); + index_create(&index->base, (struct engine *)memtx, + &memtx_hash_index_vtab, def); light_index_create(&index->hash_table, index->base.def->key_def, MEMTX_EXTENT_SIZE, memtx_index_extent_alloc, diff --git a/src/box/memtx_rtree.cc b/src/box/memtx_rtree.cc index a21950bc6b3f36b7ee1d8c2db6c57aeb3c3f3504..187410ba9f5b9142386b8c684998100df14adab2 100644 --- a/src/box/memtx_rtree.cc +++ b/src/box/memtx_rtree.cc @@ -439,17 +439,9 @@ memtx_rtree_index_new(struct memtx_engine *memtx, struct index_def *def) } struct memtx_rtree_index *index = - (struct memtx_rtree_index *)calloc(1, sizeof(*index)); - if (index == NULL) { - diag_set(OutOfMemory, sizeof(*index), - "malloc", "struct memtx_rtree_index"); - return NULL; - } - if (index_create(&index->base, (struct engine *)memtx, - &memtx_rtree_index_vtab, def) != 0) { - free(index); - return NULL; - } + (struct memtx_rtree_index *)xcalloc(1, sizeof(*index)); + index_create(&index->base, (struct engine *)memtx, + &memtx_rtree_index_vtab, def); index->dimension = def->opts.dimension; rtree_init(&index->tree, index->dimension, distance_type, diff --git a/src/box/memtx_tree.cc b/src/box/memtx_tree.cc index 5c7a49010ed24f27fdf73179976658cfac6f1967..8cbb2c4b3761d1dae7920d8837e72fc021a01c42 100644 --- a/src/box/memtx_tree.cc +++ b/src/box/memtx_tree.cc @@ -2069,10 +2069,7 @@ memtx_tree_index_create_read_view(struct index *base) (struct memtx_tree_index<USE_HINT> *)base; struct tree_read_view<USE_HINT> *rv = (struct tree_read_view<USE_HINT> *)xmalloc(sizeof(*rv)); - if (index_read_view_create(&rv->base, &vtab, base->def) != 0) { - free(rv); - return NULL; - } + index_read_view_create(&rv->base, &vtab, base->def); struct space *space = space_by_id(base->def->space_id); assert(space != NULL); memtx_tx_snapshot_cleaner_create(&rv->cleaner, space); @@ -2194,17 +2191,8 @@ memtx_tree_index_new_tpl(struct memtx_engine *memtx, struct index_def *def, { struct memtx_tree_index<USE_HINT> *index = (struct memtx_tree_index<USE_HINT> *) - calloc(1, sizeof(*index)); - if (index == NULL) { - diag_set(OutOfMemory, sizeof(*index), - "malloc", "struct memtx_tree_index"); - return NULL; - } - if (index_create(&index->base, (struct engine *)memtx, - vtab, def) != 0) { - free(index); - return NULL; - } + xcalloc(1, sizeof(*index)); + index_create(&index->base, (struct engine *)memtx, vtab, def); /* See comment to memtx_tree_index_update_def(). */ struct key_def *cmp_def; diff --git a/src/box/sequence.c b/src/box/sequence.c index 7f1e5c50a3fce986291271a29d5a14eeff82ec2f..b7c536a26761e1b08ffeb0fdbae320646c9a9ec0 100644 --- a/src/box/sequence.c +++ b/src/box/sequence.c @@ -410,17 +410,13 @@ sequence_data_read_view_free(struct index_read_view *base) struct index_read_view * sequence_data_read_view_create(struct index *index) { - (void)index; static const struct index_read_view_vtab vtab = { .free = sequence_data_read_view_free, .get_raw = sequence_data_read_view_get_raw, .create_iterator = sequence_data_iterator_create, }; struct sequence_data_read_view *rv = xmalloc(sizeof(*rv)); - if (index_read_view_create(&rv->base, &vtab, index->def) != 0) { - free(rv); - return NULL; - } + index_read_view_create(&rv->base, &vtab, index->def); light_sequence_view_create(&rv->view, &sequence_data_index); return (struct index_read_view *)rv; } diff --git a/src/box/session_settings.c b/src/box/session_settings.c index 053628d3de002485390410ce00ba148924695861..66fa9fc8307e103c6cd5abbdfeb9c3cafeb3da57 100644 --- a/src/box/session_settings.c +++ b/src/box/session_settings.c @@ -409,17 +409,9 @@ session_settings_space_create_index(struct space *space, struct index_def *def) return NULL; } - struct session_settings_index *index = - (struct session_settings_index *)calloc(1, sizeof(*index)); - if (index == NULL) { - diag_set(OutOfMemory, sizeof(*index), "calloc", "index"); - return NULL; - } - if (index_create(&index->base, space->engine, - &session_settings_index_vtab, def) != 0) { - free(index); - return NULL; - } + struct session_settings_index *index = xcalloc(1, sizeof(*index)); + index_create(&index->base, space->engine, &session_settings_index_vtab, + def); index->format = space->format; return &index->base; diff --git a/src/box/sysview.c b/src/box/sysview.c index 9167e37a9c8abfac32959ce099838faf9e654bc8..6b3dfd790ddccc36be26d4badafce661e0dd4a5a 100644 --- a/src/box/sysview.c +++ b/src/box/sysview.c @@ -475,18 +475,9 @@ sysview_space_create_index(struct space *space, struct index_def *def) return NULL; } - struct sysview_index *index = - (struct sysview_index *)calloc(1, sizeof(*index)); - if (index == NULL) { - diag_set(OutOfMemory, sizeof(*index), - "malloc", "struct sysview_index"); - return NULL; - } - if (index_create(&index->base, (struct engine *)sysview, - &sysview_index_vtab, def) != 0) { - free(index); - return NULL; - } + struct sysview_index *index = xcalloc(1, sizeof(*index)); + index_create(&index->base, (struct engine *)sysview, + &sysview_index_vtab, def); index->source_space_id = source_space_id; index->source_index_id = source_index_id; diff --git a/src/box/vinyl.c b/src/box/vinyl.c index d2f1f61d9ae2fb19f004f5a6cb8539c6b33490d4..dc2c053be9371dac37abba8287605f566da6f79d 100644 --- a/src/box/vinyl.c +++ b/src/box/vinyl.c @@ -713,11 +713,7 @@ vinyl_space_create_index(struct space *space, struct index_def *index_def) if (lsm == NULL) return NULL; - if (index_create(&lsm->base, &env->base, - &vinyl_index_vtab, index_def) != 0) { - vy_lsm_delete(lsm); - return NULL; - } + index_create(&lsm->base, &env->base, &vinyl_index_vtab, index_def); return &lsm->base; }