From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lj1-f171.google.com (mail-lj1-f171.google.com [209.85.208.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 8C385445320 for ; Sat, 11 Jul 2020 18:46:54 +0300 (MSK) Received: by mail-lj1-f171.google.com with SMTP id s9so9812838ljm.11 for ; Sat, 11 Jul 2020 08:46:54 -0700 (PDT) Date: Sat, 11 Jul 2020 18:46:51 +0300 From: Cyrill Gorcunov Message-ID: <20200711154651.GC296695@grain> References: <20200710075605.217824-1-gorcunov@gmail.com> <20200710075605.217824-6-gorcunov@gmail.com> <64827f4e-4732-774c-6a2a-81bce34e417a@tarantool.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <64827f4e-4732-774c-6a2a-81bce34e417a@tarantool.org> Subject: Re: [Tarantool-patches] [PATCH 5/5] qsync: sanitize txn_limbo_on_rollback List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Vladislav Shpilevoy Cc: tml On Fri, Jul 10, 2020 at 10:38:39PM +0200, Vladislav Shpilevoy wrote: > > @@ -691,13 +691,12 @@ txn_commit_nop(struct txn *txn) > > static int > > txn_limbo_on_rollback(struct trigger *trig, void *event) > > { > > - (void) event; > > - struct txn *txn = (struct txn *) event; > > + struct txn *txn = event; > > У нас так принято в коде, делать касты явными, даже в С и > даже из воида. Хотя мы это уже обсуждали вроде, я почти > уверен. Не, не было такого требования. Если у нас так принято, то надо прописать в SOB (и добавить такие вещи везде, только тогда еще придется и все вызовы malloc/calloc проверить). "C" стандарт гарантирует приведение void* к другому типу (в отличие от C++). Наверное отсюда и пошло, что в коде мешанина: где-то есть приведение, где-то нет. Поскольку я меняю код этой функции заодно убрал и этот момент. Мне не принципиально, если тебе нравится явное приведение типов, то без проблем. > > /* Check whether limbo has performed the cleanup. */ > > - if (txn->signature != TXN_SIGNATURE_ROLLBACK) > > - return 0; > > - struct txn_limbo_entry *entry = (struct txn_limbo_entry *) trig->data; > > - txn_limbo_abort(&txn_limbo, entry); > > + if (txn->signature == TXN_SIGNATURE_ROLLBACK) { > > + struct txn_limbo_entry *e = trig->data; > > + txn_limbo_abort(&txn_limbo, e); > > + } > > Зачем это изменение? Что оно улучшает? Я правда не понимаю. В > этом патчсете все коммиты выглядят как просто пощупывание кода > в процессе его чтения, и как вкусовщина. Давай плиз таких > изменений избегать. Убирает лишний return. До этого их было два. Я думаю ты просто не заметил, что удаляется первый return (и кода поменьше становится как на уровне сорцов, так и на уровне бинарника).