aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPaul Eggert2011-04-20 01:38:11 -0700
committerPaul Eggert2011-04-20 01:38:11 -0700
commit67769ffc6f3458e6e634f4a32c1d97195e1e077b (patch)
tree89c99ebee0a15c414f8b5b50605a729071e2bfe0 /src
parent37aa2f85254069b9344f620ab5cd306e4aa33271 (diff)
downloademacs-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/ChangeLog3
-rw-r--r--src/textprop.c17
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 @@
12011-04-20 Paul Eggert <eggert@cs.ucla.edu> 12011-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);