From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Matt Armstrong Newsgroups: gmane.emacs.bugs Subject: bug#59137: [PATCH] To minor changes related to overlays Date: Tue, 08 Nov 2022 15:14:08 -0800 Message-ID: <87edudm43j.fsf@rfc20.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="10871"; mail-complaints-to="usenet@ciao.gmane.io" To: 59137@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Wed Nov 09 00:15:32 2022 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1osXoa-0002bv-68 for geb-bug-gnu-emacs@m.gmane-mx.org; Wed, 09 Nov 2022 00:15:32 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1osXoG-00063m-Tp; Tue, 08 Nov 2022 18:15:13 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1osXo8-00063I-Jp for bug-gnu-emacs@gnu.org; Tue, 08 Nov 2022 18:15:06 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1osXo6-00006K-N3 for bug-gnu-emacs@gnu.org; Tue, 08 Nov 2022 18:15:04 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1osXo6-0006Nt-FU for bug-gnu-emacs@gnu.org; Tue, 08 Nov 2022 18:15:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Matt Armstrong Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 08 Nov 2022 23:15:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 59137 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.166794927124484 (code B ref -1); Tue, 08 Nov 2022 23:15:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 8 Nov 2022 23:14:31 +0000 Original-Received: from localhost ([127.0.0.1]:38375 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1osXna-0006Mp-Gj for submit@debbugs.gnu.org; Tue, 08 Nov 2022 18:14:30 -0500 Original-Received: from lists.gnu.org ([209.51.188.17]:52670) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1osXnY-0006Mi-Ha for submit@debbugs.gnu.org; Tue, 08 Nov 2022 18:14:29 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1osXnY-0005CC-Bo for bug-gnu-emacs@gnu.org; Tue, 08 Nov 2022 18:14:28 -0500 Original-Received: from relay8-d.mail.gandi.net ([217.70.183.201]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1osXnN-0008LY-Pf for bug-gnu-emacs@gnu.org; Tue, 08 Nov 2022 18:14:28 -0500 Original-Received: (Authenticated sender: matt@rfc20.org) by mail.gandi.net (Postfix) with ESMTPSA id 3C23D1BF203 for ; Tue, 8 Nov 2022 23:14:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rfc20.org; s=gm1; t=1667949253; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type; bh=161aOcVUVeos8m0/SLRaF2hW9GAMNtP5TasIinDrU7Q=; b=aSaUX9mIIcPRsdqejrQNxVYNvq0VXpHOmrBtZSnfGqJqHvpasLDBGCdE7zbILMy+8T69Kd mA8aMTY7lJYEJXyowijUkUynMKxSRcPCYHaNNXVyZph7ssvYpYwfE5Cu4QyWyKsbYlecy0 a4i4r/bXYx5jFhO40FxB9bZD3kx90aycId994uq9d5k4j4J7cbVpeFPZqZZBeqCOiGhQ44 s6Ofmsr7P/OQKxKNcJfBdKTeofaDVrotbBJBqIkP78a5NbWCtpliebv4BZh0wMOeLhqKkW iQ+Mtutuml+YJpBbq5V/hBlwXE39GPtqogqUIOC9WHBoRXyop3sVYEJ4+G5oxQ== Original-Received: from matt by naz with local (Exim 4.96) (envelope-from ) id 1osXnE-001eak-0a for bug-gnu-emacs@gnu.org; Tue, 08 Nov 2022 15:14:08 -0800 Received-SPF: pass client-ip=217.70.183.201; envelope-from=matt@rfc20.org; helo=relay8-d.mail.gandi.net X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1, DKIM_SIGNED=0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:247371 Archived-At: --=-=-= Content-Type: text/plain Tags: patch X-Debbugs-CC: Stefan Monnier --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-Add-itree_empty_p-for-clarity-and-reduced-coupling.patch >From 023dddaf723aacd6579331f76f61a2741a4e52d5 Mon Sep 17 00:00:00 2001 From: Matt Armstrong Date: Tue, 8 Nov 2022 15:00:18 -0800 Subject: [PATCH 1/2] Add itree_empty_p for clarity and reduced coupling * src/itree.h (itree_empty_p): New predicate. * src/buffer.h (buffer_has_overlays): Call it. * src/pdumper.c (dump_buffer): ditto. * src/alloc.c (mark_buffer): ditto. --- src/alloc.c | 2 +- src/buffer.h | 3 +-- src/itree.h | 9 +++++++++ src/pdumper.c | 2 +- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/alloc.c b/src/alloc.c index 6862cf916fb..d815a199fe0 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -6548,7 +6548,7 @@ mark_buffer (struct buffer *buffer) if (!BUFFER_LIVE_P (buffer)) mark_object (BVAR (buffer, undo_list)); - if (buffer->overlays) + if (!itree_empty_p (buffer->overlays)) mark_overlays (buffer->overlays->root); /* If this is an indirect buffer, mark its base buffer. */ diff --git a/src/buffer.h b/src/buffer.h index 2e80c8a7b04..08b0420c066 100644 --- a/src/buffer.h +++ b/src/buffer.h @@ -1273,8 +1273,7 @@ set_buffer_intervals (struct buffer *b, INTERVAL i) INLINE bool buffer_has_overlays (void) { - return current_buffer->overlays - && (current_buffer->overlays->root != NULL); + return !itree_empty_p (current_buffer->overlays); } /* Functions for accessing a character or byte, diff --git a/src/itree.h b/src/itree.h index 10ee0897c37..d6c6fb10591 100644 --- a/src/itree.h +++ b/src/itree.h @@ -25,6 +25,8 @@ #define ITREE_H #include "lisp.h" +INLINE_HEADER_BEGIN + /* The tree and node structs are mainly here, so they can be allocated. @@ -117,6 +119,11 @@ #define ITREE_H ptrdiff_t, ptrdiff_t); extern struct itree_tree *itree_create (void); extern void itree_destroy (struct itree_tree *); +INLINE bool +itree_empty_p (struct itree_tree *tree) +{ + return !tree || !tree->root; +} extern intmax_t itree_size (struct itree_tree *); extern void itree_clear (struct itree_tree *); extern void itree_insert (struct itree_tree *, struct itree_node *, @@ -183,4 +190,6 @@ #define ITREE_FOREACH_ABORT() \ #define ITREE_FOREACH_NARROW(beg, end) \ itree_iterator_narrow (itree_iter_, beg, end) +INLINE_HEADER_END + #endif diff --git a/src/pdumper.c b/src/pdumper.c index 0a5d96dbb7c..22d3f3f90e4 100644 --- a/src/pdumper.c +++ b/src/pdumper.c @@ -2863,7 +2863,7 @@ dump_buffer (struct dump_context *ctx, const struct buffer *in_buffer) DUMP_FIELD_COPY (out, buffer, inhibit_buffer_hooks); DUMP_FIELD_COPY (out, buffer, long_line_optimizations_p); - if (buffer->overlays && buffer->overlays->root != NULL) + if (!itree_empty_p (buffer->overlays)) /* We haven't implemented the code to dump overlays. */ emacs_abort (); else -- 2.35.1 --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0002-Simplify-ITREE_FOREACH.patch >From 67caf59c7399659a7de273c175134eac88e777ac Mon Sep 17 00:00:00 2001 From: Matt Armstrong Date: Tue, 8 Nov 2022 15:08:00 -0800 Subject: [PATCH 2/2] Simplify ITREE_FOREACH * src/itree.c (itree_iterator_next): Call itree_iterator_finish if returning NULL. * src/itree.h (ITREE_FOREACH): Don't call itree_iterator_finish. --- src/itree.c | 3 +++ src/itree.h | 7 +++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/itree.c b/src/itree.c index 989173db4e5..74199db3e42 100644 --- a/src/itree.c +++ b/src/itree.c @@ -1431,6 +1431,9 @@ itree_iterator_next (struct itree_iterator *g) after it was pushed: Check if it still intersects. */ } while (node && ! interval_node_intersects (node, g->begin, g->end)); + if (!node) + itree_iterator_finish(g); + return node; } diff --git a/src/itree.h b/src/itree.h index d6c6fb10591..67e258dd832 100644 --- a/src/itree.h +++ b/src/itree.h @@ -179,10 +179,9 @@ #define ITREE_FOREACH(n, t, beg, end, order) \ { } \ else \ for (struct itree_iterator *itree_iter_ \ - = itree_iterator_start (t, beg, end, ITREE_##order, \ - __FILE__, __LINE__); \ - ((n = itree_iterator_next (itree_iter_)) \ - || (itree_iterator_finish (itree_iter_), false));) + = itree_iterator_start (t, beg, end, ITREE_##order, \ + __FILE__, __LINE__); \ + (n = itree_iterator_next (itree_iter_));) #define ITREE_FOREACH_ABORT() \ itree_iterator_finish (itree_iter_) -- 2.35.1 --=-=-=--