diff options
| -rw-r--r-- | src/ChangeLog | 5 | ||||
| -rw-r--r-- | src/buffer.c | 12 |
2 files changed, 17 insertions, 0 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index ed2346424ea..37c167393f7 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2013-08-28 Dmitry Antipov <dmantipov@yandex.ru> | ||
| 2 | |||
| 3 | * buffer.c (Foverlays_at, Foverlays_in, Fnext_overlay_change) | ||
| 4 | (Fprevious_overlay_change): Fast path for buffer with no overlays. | ||
| 5 | |||
| 1 | 2013-08-28 Paul Eggert <eggert@cs.ucla.edu> | 6 | 2013-08-28 Paul Eggert <eggert@cs.ucla.edu> |
| 2 | 7 | ||
| 3 | * Makefile.in (SHELL): Now @SHELL@, not /bin/sh, | 8 | * Makefile.in (SHELL): Now @SHELL@, not /bin/sh, |
diff --git a/src/buffer.c b/src/buffer.c index 7bc98a8b1d3..1495bd65de7 100644 --- a/src/buffer.c +++ b/src/buffer.c | |||
| @@ -4161,6 +4161,9 @@ DEFUN ("overlays-at", Foverlays_at, Soverlays_at, 1, 1, 0, | |||
| 4161 | 4161 | ||
| 4162 | CHECK_NUMBER_COERCE_MARKER (pos); | 4162 | CHECK_NUMBER_COERCE_MARKER (pos); |
| 4163 | 4163 | ||
| 4164 | if (!buffer_has_overlays ()) | ||
| 4165 | return Qnil; | ||
| 4166 | |||
| 4164 | len = 10; | 4167 | len = 10; |
| 4165 | /* We can't use alloca here because overlays_at can call xrealloc. */ | 4168 | /* We can't use alloca here because overlays_at can call xrealloc. */ |
| 4166 | overlay_vec = xmalloc (len * sizeof *overlay_vec); | 4169 | overlay_vec = xmalloc (len * sizeof *overlay_vec); |
| @@ -4193,6 +4196,9 @@ end of the buffer. */) | |||
| 4193 | CHECK_NUMBER_COERCE_MARKER (beg); | 4196 | CHECK_NUMBER_COERCE_MARKER (beg); |
| 4194 | CHECK_NUMBER_COERCE_MARKER (end); | 4197 | CHECK_NUMBER_COERCE_MARKER (end); |
| 4195 | 4198 | ||
| 4199 | if (!buffer_has_overlays ()) | ||
| 4200 | return Qnil; | ||
| 4201 | |||
| 4196 | len = 10; | 4202 | len = 10; |
| 4197 | overlay_vec = xmalloc (len * sizeof *overlay_vec); | 4203 | overlay_vec = xmalloc (len * sizeof *overlay_vec); |
| 4198 | 4204 | ||
| @@ -4221,6 +4227,9 @@ the value is (point-max). */) | |||
| 4221 | 4227 | ||
| 4222 | CHECK_NUMBER_COERCE_MARKER (pos); | 4228 | CHECK_NUMBER_COERCE_MARKER (pos); |
| 4223 | 4229 | ||
| 4230 | if (!buffer_has_overlays ()) | ||
| 4231 | return make_number (ZV); | ||
| 4232 | |||
| 4224 | len = 10; | 4233 | len = 10; |
| 4225 | overlay_vec = xmalloc (len * sizeof *overlay_vec); | 4234 | overlay_vec = xmalloc (len * sizeof *overlay_vec); |
| 4226 | 4235 | ||
| @@ -4260,6 +4269,9 @@ the value is (point-min). */) | |||
| 4260 | 4269 | ||
| 4261 | CHECK_NUMBER_COERCE_MARKER (pos); | 4270 | CHECK_NUMBER_COERCE_MARKER (pos); |
| 4262 | 4271 | ||
| 4272 | if (!buffer_has_overlays ()) | ||
| 4273 | return make_number (BEGV); | ||
| 4274 | |||
| 4263 | /* At beginning of buffer, we know the answer; | 4275 | /* At beginning of buffer, we know the answer; |
| 4264 | avoid bug subtracting 1 below. */ | 4276 | avoid bug subtracting 1 below. */ |
| 4265 | if (XINT (pos) == BEGV) | 4277 | if (XINT (pos) == BEGV) |