From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp55.i.mail.ru (smtp55.i.mail.ru [217.69.128.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id D72A34696C3 for ; Wed, 15 Jan 2020 00:00:28 +0300 (MSK) References: <5697dc45201ed20fbed9d970316bae83244fa22f.1578951026.git.i.kosarev@tarantool.org> From: Vladislav Shpilevoy Message-ID: Date: Tue, 14 Jan 2020 22:00:27 +0100 MIME-Version: 1.0 In-Reply-To: <5697dc45201ed20fbed9d970316bae83244fa22f.1578951026.git.i.kosarev@tarantool.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Subject: Re: [Tarantool-patches] [PATCH v2 1/2] b-tree: return NULL on matras_alloc fail List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Ilya Kosarev , tarantool-patches@dev.tarantool.org Hi! Thanks for the patch! On 13/01/2020 22:31, Ilya Kosarev wrote: > In bps_tree_create_leaf we use matras_alloc in case > bps_tree_garbage_pop didn't work out. However it also might not > succeed. Then we need to return NULL instead of dereferencing NULL > pointer. > > Part of: #3807 Please, drop ':', we don't use it when reference tickets. > --- > src/lib/salad/bps_tree.h | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/src/lib/salad/bps_tree.h b/src/lib/salad/bps_tree.h > index d28b53f53..ede2a3b7f 100644 > --- a/src/lib/salad/bps_tree.h > +++ b/src/lib/salad/bps_tree.h > @@ -2147,8 +2147,11 @@ bps_tree_create_leaf(struct bps_tree *tree, bps_tree_block_id_t *id) > { > struct bps_leaf *res = (struct bps_leaf *) > bps_tree_garbage_pop(tree, id); > - if (!res) > - res = (struct bps_leaf *)matras_alloc(&tree->matras, id); > + if (!res) { > + res = (struct bps_leaf *) matras_alloc(&tree->matras, id); > + if (!res) > + return NULL; > + } Since you've changed this code anyway, lets use explicit '== NULL' instead of '!'.