aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorStefan Monnier2022-10-14 16:28:33 -0400
committerStefan Monnier2022-10-14 16:28:33 -0400
commitb86505387480fed81629cbc81cef6b70098bd607 (patch)
treed7a8587f015342399859f75a81da3873c3807272 /src
parent65a7b5a802a15daa6274403fef822ec3c9b95469 (diff)
downloademacs-b86505387480fed81629cbc81cef6b70098bd607.tar.gz
emacs-b86505387480fed81629cbc81cef6b70098bd607.zip
src/textprop.c (get_char_property_and_overlay): Fix bug#58479
Correct `get-char-property` which failed to ignore empty overlays. * src/textprop.c (get_char_property_and_overlay): Make sure the overlay covers the character. * test/src/buffer-tests.el (buffer-tests--overlay-bug58479): New test. * src/buffer.h (buffer_has_overlays): Avoid `interval_tree_size`.
Diffstat (limited to 'src')
-rw-r--r--src/buffer.h2
-rw-r--r--src/textprop.c3
2 files changed, 3 insertions, 2 deletions
diff --git a/src/buffer.h b/src/buffer.h
index 288acd4f5ee..deb0367d990 100644
--- a/src/buffer.h
+++ b/src/buffer.h
@@ -1275,7 +1275,7 @@ INLINE bool
1275buffer_has_overlays (void) 1275buffer_has_overlays (void)
1276{ 1276{
1277 return current_buffer->overlays 1277 return current_buffer->overlays
1278 && (interval_tree_size (current_buffer->overlays) > 0); 1278 && (current_buffer->overlays->root != ITREE_NULL);
1279} 1279}
1280 1280
1281/* Functions for accessing a character or byte, 1281/* Functions for accessing a character or byte,
diff --git a/src/textprop.c b/src/textprop.c
index 04fae528097..b34246f5bc7 100644
--- a/src/textprop.c
+++ b/src/textprop.c
@@ -649,7 +649,8 @@ get_char_property_and_overlay (Lisp_Object position, register Lisp_Object prop,
649 Lisp_Object tem = Foverlay_get (node->data, prop); 649 Lisp_Object tem = Foverlay_get (node->data, prop);
650 struct sortvec *this; 650 struct sortvec *this;
651 651
652 if (NILP (tem) || (w && ! overlay_matches_window (w, node->data))) 652 if (NILP (tem) || node->end < pos + 1
653 || (w && ! overlay_matches_window (w, node->data)))
653 continue; 654 continue;
654 655
655 this = (result == items ? items + 1 : items); 656 this = (result == items ? items + 1 : items);