diff options
| author | Paul Eggert | 2011-04-20 01:38:11 -0700 |
|---|---|---|
| committer | Paul Eggert | 2011-04-20 01:38:11 -0700 |
| commit | 67769ffc6f3458e6e634f4a32c1d97195e1e077b (patch) | |
| tree | 89c99ebee0a15c414f8b5b50605a729071e2bfe0 /src | |
| parent | 37aa2f85254069b9344f620ab5cd306e4aa33271 (diff) | |
| download | emacs-67769ffc6f3458e6e634f4a32c1d97195e1e077b.tar.gz emacs-67769ffc6f3458e6e634f4a32c1d97195e1e077b.zip | |
* textprop.c (set_text_properties_1): Rewrite for clarity,
and to avoid GCC warning about integer overflow.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 3 | ||||
| -rw-r--r-- | src/textprop.c | 17 |
2 files changed, 13 insertions, 7 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index d01d8fbd727..7eaa153f79a 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,5 +1,8 @@ | |||
| 1 | 2011-04-20 Paul Eggert <eggert@cs.ucla.edu> | 1 | 2011-04-20 Paul Eggert <eggert@cs.ucla.edu> |
| 2 | 2 | ||
| 3 | * textprop.c (set_text_properties_1): Rewrite for clarity, | ||
| 4 | and to avoid GCC warning about integer overflow. | ||
| 5 | |||
| 3 | * intervals.h (struct interval): Use EMACS_INT for members | 6 | * intervals.h (struct interval): Use EMACS_INT for members |
| 4 | where EMACS_UINT might cause problems. See | 7 | where EMACS_UINT might cause problems. See |
| 5 | <http://lists.gnu.org/archive/html/emacs-devel/2011-04/msg00514.html>. | 8 | <http://lists.gnu.org/archive/html/emacs-devel/2011-04/msg00514.html>. |
diff --git a/src/textprop.c b/src/textprop.c index d9da36bf36b..64265fd679c 100644 --- a/src/textprop.c +++ b/src/textprop.c | |||
| @@ -1348,15 +1348,18 @@ set_text_properties_1 (Lisp_Object start, Lisp_Object end, Lisp_Object propertie | |||
| 1348 | register EMACS_INT s, len; | 1348 | register EMACS_INT s, len; |
| 1349 | INTERVAL unchanged; | 1349 | INTERVAL unchanged; |
| 1350 | 1350 | ||
| 1351 | s = XINT (start); | 1351 | if (XINT (start) < XINT (end)) |
| 1352 | len = XINT (end) - s; | ||
| 1353 | if (len == 0) | ||
| 1354 | return; | ||
| 1355 | if (len < 0) | ||
| 1356 | { | 1352 | { |
| 1357 | s = s + len; | 1353 | s = XINT (start); |
| 1358 | len = - len; | 1354 | len = XINT (end) - s; |
| 1359 | } | 1355 | } |
| 1356 | else if (XINT (end) < XINT (start)) | ||
| 1357 | { | ||
| 1358 | s = XINT (end); | ||
| 1359 | len = XINT (start) - s; | ||
| 1360 | } | ||
| 1361 | else | ||
| 1362 | return; | ||
| 1360 | 1363 | ||
| 1361 | if (i == 0) | 1364 | if (i == 0) |
| 1362 | i = find_interval (BUF_INTERVALS (XBUFFER (buffer)), s); | 1365 | i = find_interval (BUF_INTERVALS (XBUFFER (buffer)), s); |