From patchwork Fri Jul 7 13:39:57 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luc Van Oostenryck X-Patchwork-Id: 9830505 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 26AAA60352 for ; Fri, 7 Jul 2017 13:51:28 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1BA9E1FFDA for ; Fri, 7 Jul 2017 13:51:28 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0E2D128676; Fri, 7 Jul 2017 13:51:28 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.3 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, RCVD_IN_SORBS_SPAM, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9F9211FFDA for ; Fri, 7 Jul 2017 13:51:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752795AbdGGNkn (ORCPT ); Fri, 7 Jul 2017 09:40:43 -0400 Received: from mail-lf0-f66.google.com ([209.85.215.66]:36859 "EHLO mail-lf0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752791AbdGGNkl (ORCPT ); Fri, 7 Jul 2017 09:40:41 -0400 Received: by mail-lf0-f66.google.com with SMTP id f28so4001181lfi.3 for ; Fri, 07 Jul 2017 06:40:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=BGrjwSVNB6+R/4oE6irAZqfuiqaFF/6HQG7Kj8T1dbU=; b=V8tL7v37q5jk1brZ1P0Aj1BhOMGSIb+uxLPy2YYaqbNZBEHj9F+WI4qQbvH9+6w2UV f7j2K5JZp5LqL4uCiIIAwv0ZnGTOjbZH34MlxZZONKdfJejkNWK3ScqxiJGHl9biVhzQ EBnSyCtUvBNy4pA74WqY7kVFSogoY/JcPpmrZy7gNI8x6QUYDhCo3qPCNjXz1sUfSTuJ rjEuWaFMuJ+nHF+z+8oQ8ToYsXzYFGYo6RJs2cEL8CUq49EvDvcFircD6HIQHyLarJkL xXeebZ48ZYHE77Bj90h0BxwDKYqPSQzaLNo5gv7yEqEmCD2TQ+4ZZVC9X9fyM8lNht2a i2aQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=BGrjwSVNB6+R/4oE6irAZqfuiqaFF/6HQG7Kj8T1dbU=; b=B1ItY+Kc7f6+9ttrT+xvycOuIOxVWUHZvTImsraFvr6JwBZS2qgyOSzHntX3pVIbB6 mW2bprRSD2igxz7WUfzNgTHHbUb6wixG3ex5iemoUNTD9nqx4wDppDTUpte9G954mYE0 U5gHLu46EdKX8asHj8NT5AJhU4wHigqDwNb+wdeNGRE1NaSeA7FHHr6pCfZDwsGPoiA2 FpVTq4HLwSyuCy1mWLd8osK5zI2oiLFVA+9a/W8QNuI8IbYUjqGqRoF/lwXH0V1K5F7a fmBmZmeFVA5z2bS1v8zgPU4GpCPhuO1PTK43BZOYiQydhPX3kxivMzmM6EDLbScQejyl fFyg== X-Gm-Message-State: AIVw1136ZqBS3ZRx8TIi/NmTEqLU9VVuig/zDjBZS0WVHVyoZ0jjKoNQ 8wCK7KmVX6ZsLw+yRc4= X-Received: by 10.80.186.130 with SMTP id x2mr2269664ede.72.1499434840073; Fri, 07 Jul 2017 06:40:40 -0700 (PDT) Received: from localhost.localdomain ([2a02:a03f:8ed:9a00:3d4d:9b95:75f7:a8db]) by smtp.gmail.com with ESMTPSA id e28sm1899277ede.14.2017.07.07.06.40.39 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 07 Jul 2017 06:40:39 -0700 (PDT) From: Luc Van Oostenryck To: linux-sparse@vger.kernel.org Cc: Christopher Li , Linus Torvalds , Luc Van Oostenryck Subject: [PATCH 29/34] ptrlist: let delete_ptr_list_last() use the iterator API Date: Fri, 7 Jul 2017 15:39:57 +0200 Message-Id: <20170707134002.49500-30-luc.vanoostenryck@gmail.com> X-Mailer: git-send-email 2.13.0 In-Reply-To: <20170707134002.49500-1-luc.vanoostenryck@gmail.com> References: <20170707134002.49500-1-luc.vanoostenryck@gmail.com> Sender: linux-sparse-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-sparse@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP --- ptrlist.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/ptrlist.c b/ptrlist.c index bae5512f3..1957baf1f 100644 --- a/ptrlist.c +++ b/ptrlist.c @@ -207,20 +207,21 @@ void * undo_ptr_list_last(struct ptr_list **head) void * delete_ptr_list_last(struct ptr_list **head) { - void *ptr = NULL; - struct ptr_list *last, *first = *head; + struct ptr_cur cur; + void *ptr; - if (!first) + if (!ptr_cur_end(&cur, *head) || !ptr_cur_prev(&cur)) return NULL; - last = first->prev; - if (last->nr) - ptr = last->list[--last->nr]; - if (last->nr <=0) { - first->prev = last->prev; - last->prev->next = first; - if (last == first) + + ptr = ptr_cur_entry(&cur); + if (--cur.l->nr == 0) { + if (cur.l == cur.h) *head = NULL; - __free_ptrlist(last); + else { + cur.h->prev = cur.l->prev; + cur.l->prev->next = cur.h; + } + __free_ptrlist(cur.l); } return ptr; }