]> git.eshelyaron.com Git - emacs.git/commitdiff
* textprop.c (set_text_properties_1): Rewrite for clarity,
authorPaul Eggert <eggert@cs.ucla.edu>
Wed, 20 Apr 2011 08:38:11 +0000 (01:38 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Wed, 20 Apr 2011 08:38:11 +0000 (01:38 -0700)
and to avoid GCC warning about integer overflow.

src/ChangeLog
src/textprop.c

index d01d8fbd727d8ac57a7c4bfaa02cc5c385a8a124..7eaa153f79ab328c403161b40d3958003fa4fb4f 100644 (file)
@@ -1,5 +1,8 @@
 2011-04-20  Paul Eggert  <eggert@cs.ucla.edu>
 
+       * textprop.c (set_text_properties_1): Rewrite for clarity,
+       and to avoid GCC warning about integer overflow.
+
        * intervals.h (struct interval): Use EMACS_INT for members
        where EMACS_UINT might cause problems.  See
        <http://lists.gnu.org/archive/html/emacs-devel/2011-04/msg00514.html>.
index d9da36bf36be349cd4649b639ab9dfa9afef8271..64265fd679c99408ec76e13753a60702b4f97b51 100644 (file)
@@ -1348,15 +1348,18 @@ set_text_properties_1 (Lisp_Object start, Lisp_Object end, Lisp_Object propertie
   register EMACS_INT s, len;
   INTERVAL unchanged;
 
-  s = XINT (start);
-  len = XINT (end) - s;
-  if (len == 0)
-    return;
-  if (len < 0)
+  if (XINT (start) < XINT (end))
     {
-      s = s + len;
-      len = - len;
+      s = XINT (start);
+      len = XINT (end) - s;
     }
+  else if (XINT (end) < XINT (start))
+    {
+      s = XINT (end);
+      len = XINT (start) - s;
+    }
+  else
+    return;
 
   if (i == 0)
     i = find_interval (BUF_INTERVALS (XBUFFER (buffer)), s);