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, 15 Nov 2022 09:53:32 -0800 Message-ID: <87edu46r4z.fsf@rfc20.org> References: <87edudm43j.fsf@rfc20.org> <834jv7rt5p.fsf@gnu.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="10430"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 59137@debbugs.gnu.org To: Eli Zaretskii , Stefan Monnier Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Tue Nov 15 18:54:21 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 1ov08b-0002S9-8s for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 15 Nov 2022 18:54:21 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ov08M-0007Tm-Li; Tue, 15 Nov 2022 12:54:06 -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 1ov08I-0007Su-VT for bug-gnu-emacs@gnu.org; Tue, 15 Nov 2022 12:54:03 -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 1ov08I-0005uC-NI for bug-gnu-emacs@gnu.org; Tue, 15 Nov 2022 12:54:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1ov08I-0003Xh-6r for bug-gnu-emacs@gnu.org; Tue, 15 Nov 2022 12:54: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, 15 Nov 2022 17:54:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 59137 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 59137-submit@debbugs.gnu.org id=B59137.166853482913593 (code B ref 59137); Tue, 15 Nov 2022 17:54:02 +0000 Original-Received: (at 59137) by debbugs.gnu.org; 15 Nov 2022 17:53:49 +0000 Original-Received: from localhost ([127.0.0.1]:55199 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ov084-0003XB-Gc for submit@debbugs.gnu.org; Tue, 15 Nov 2022 12:53:48 -0500 Original-Received: from relay4-d.mail.gandi.net ([217.70.183.196]:60241) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ov07y-0003Wq-Ql for 59137@debbugs.gnu.org; Tue, 15 Nov 2022 12:53:47 -0500 Original-Received: (Authenticated sender: matt@rfc20.org) by mail.gandi.net (Postfix) with ESMTPSA id C2EC8E0007; Tue, 15 Nov 2022 17:53:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rfc20.org; s=gm1; t=1668534816; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=C2eCUlAYLMXE2jfqb7b8Z4/Pj2UW+7RJq001bm/Q+js=; b=RoOn6Gn0vZeRkR7hHgpj5f3PhLay54SzKcg0kADAmZ9XWq5GlOGDCxUa3Rh8PRJywsPeo7 wgAzYdyrgjdkDT9GKSI5TwXvjLFjaZSiM97mcPRhjMp3FDuL4G53dzoVoh4161HvyceWfB QzwqNYiIgY4wV/KE1OWM8KFaQ0/tPwUQbP78G9C5pwe8oWWfH8dzxc0s84/2tBdmT8j29F XpAW148ozZzsl+vpeMU/DqbMJf7OwTCp3GbeKUThYu9d0doBcfidpYUwalMhCxRUvFsOv6 kVbdgUjWuSoVVyDScDDzuuFFvaoxejjGFZHZOkzJWPVNY31/2fryUy+mez83yw== Original-Received: from matt by naz with local (Exim 4.96) (envelope-from ) id 1ov07o-000QNd-0b; Tue, 15 Nov 2022 09:53:32 -0800 In-Reply-To: <834jv7rt5p.fsf@gnu.org> 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:247961 Archived-At: --=-=-= Content-Type: text/plain Eli Zaretskii writes: >> + if (!node) >> + itree_iterator_finish(g); > ^ > Please leave one space between the function's name and the open > parenthesis of the argument list. Ahh, yes. Attached are new patches, rebased to current master, with that formatting change. --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-Add-itree_empty_p-for-clarity-and-reduced-coupling.patch >From 9cdfe65ee28c68398b9305d15f178358f02f4498 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 6862cf916f..d815a199fe 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 2e80c8a7b0..08b0420c06 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 10ee0897c3..d6c6fb1059 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 0a5d96dbb7..22d3f3f90e 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 c2fc83ff7e7d49bdb013881453e504f21f038104 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 ae69c97d6d..18ee6449ce 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 d6c6fb1059..67e258dd83 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 --=-=-=--