diff options
| author | Stefan Monnier | 2022-10-14 16:28:33 -0400 |
|---|---|---|
| committer | Stefan Monnier | 2022-10-14 16:28:33 -0400 |
| commit | b86505387480fed81629cbc81cef6b70098bd607 (patch) | |
| tree | d7a8587f015342399859f75a81da3873c3807272 /src | |
| parent | 65a7b5a802a15daa6274403fef822ec3c9b95469 (diff) | |
| download | emacs-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.h | 2 | ||||
| -rw-r--r-- | src/textprop.c | 3 |
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 | |||
| 1275 | buffer_has_overlays (void) | 1275 | buffer_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); |