aboutsummaryrefslogtreecommitdiffstats
path: root/src/intervals.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/intervals.c')
-rw-r--r--src/intervals.c134
1 files changed, 67 insertions, 67 deletions
diff --git a/src/intervals.c b/src/intervals.c
index a750ccd13f7..0b332caf897 100644
--- a/src/intervals.c
+++ b/src/intervals.c
@@ -223,7 +223,7 @@ traverse_intervals_noorder (INTERVAL tree, void (*function) (INTERVAL, Lisp_Obje
223 Pass FUNCTION two args: an interval, and ARG. */ 223 Pass FUNCTION two args: an interval, and ARG. */
224 224
225void 225void
226traverse_intervals (INTERVAL tree, EMACS_INT position, 226traverse_intervals (INTERVAL tree, ptrdiff_t position,
227 void (*function) (INTERVAL, Lisp_Object), Lisp_Object arg) 227 void (*function) (INTERVAL, Lisp_Object), Lisp_Object arg)
228{ 228{
229 while (!NULL_INTERVAL_P (tree)) 229 while (!NULL_INTERVAL_P (tree))
@@ -313,7 +313,7 @@ rotate_right (INTERVAL interval)
313{ 313{
314 INTERVAL i; 314 INTERVAL i;
315 INTERVAL B = interval->left; 315 INTERVAL B = interval->left;
316 EMACS_INT old_total = interval->total_length; 316 ptrdiff_t old_total = interval->total_length;
317 317
318 /* Deal with any Parent of A; make it point to B. */ 318 /* Deal with any Parent of A; make it point to B. */
319 if (! ROOT_INTERVAL_P (interval)) 319 if (! ROOT_INTERVAL_P (interval))
@@ -360,7 +360,7 @@ rotate_left (INTERVAL interval)
360{ 360{
361 INTERVAL i; 361 INTERVAL i;
362 INTERVAL B = interval->right; 362 INTERVAL B = interval->right;
363 EMACS_INT old_total = interval->total_length; 363 ptrdiff_t old_total = interval->total_length;
364 364
365 /* Deal with any parent of A; make it point to B. */ 365 /* Deal with any parent of A; make it point to B. */
366 if (! ROOT_INTERVAL_P (interval)) 366 if (! ROOT_INTERVAL_P (interval))
@@ -399,7 +399,7 @@ rotate_left (INTERVAL interval)
399static INTERVAL 399static INTERVAL
400balance_an_interval (INTERVAL i) 400balance_an_interval (INTERVAL i)
401{ 401{
402 register EMACS_INT old_diff, new_diff; 402 register ptrdiff_t old_diff, new_diff;
403 403
404 while (1) 404 while (1)
405 { 405 {
@@ -499,11 +499,11 @@ balance_intervals (INTERVAL tree)
499 it is still a root after this operation. */ 499 it is still a root after this operation. */
500 500
501INTERVAL 501INTERVAL
502split_interval_right (INTERVAL interval, EMACS_INT offset) 502split_interval_right (INTERVAL interval, ptrdiff_t offset)
503{ 503{
504 INTERVAL new = make_interval (); 504 INTERVAL new = make_interval ();
505 EMACS_INT position = interval->position; 505 ptrdiff_t position = interval->position;
506 EMACS_INT new_length = LENGTH (interval) - offset; 506 ptrdiff_t new_length = LENGTH (interval) - offset;
507 507
508 new->position = position + offset; 508 new->position = position + offset;
509 SET_INTERVAL_PARENT (new, interval); 509 SET_INTERVAL_PARENT (new, interval);
@@ -544,10 +544,10 @@ split_interval_right (INTERVAL interval, EMACS_INT offset)
544 it is still a root after this operation. */ 544 it is still a root after this operation. */
545 545
546INTERVAL 546INTERVAL
547split_interval_left (INTERVAL interval, EMACS_INT offset) 547split_interval_left (INTERVAL interval, ptrdiff_t offset)
548{ 548{
549 INTERVAL new = make_interval (); 549 INTERVAL new = make_interval ();
550 EMACS_INT new_length = offset; 550 ptrdiff_t new_length = offset;
551 551
552 new->position = interval->position; 552 new->position = interval->position;
553 interval->position = interval->position + offset; 553 interval->position = interval->position + offset;
@@ -610,11 +610,11 @@ interval_start_pos (INTERVAL source)
610 will update this cache based on the result of find_interval. */ 610 will update this cache based on the result of find_interval. */
611 611
612INTERVAL 612INTERVAL
613find_interval (register INTERVAL tree, register EMACS_INT position) 613find_interval (register INTERVAL tree, register ptrdiff_t position)
614{ 614{
615 /* The distance from the left edge of the subtree at TREE 615 /* The distance from the left edge of the subtree at TREE
616 to POSITION. */ 616 to POSITION. */
617 register EMACS_INT relative_position; 617 register ptrdiff_t relative_position;
618 618
619 if (NULL_INTERVAL_P (tree)) 619 if (NULL_INTERVAL_P (tree))
620 return NULL_INTERVAL; 620 return NULL_INTERVAL;
@@ -667,7 +667,7 @@ INTERVAL
667next_interval (register INTERVAL interval) 667next_interval (register INTERVAL interval)
668{ 668{
669 register INTERVAL i = interval; 669 register INTERVAL i = interval;
670 register EMACS_INT next_position; 670 register ptrdiff_t next_position;
671 671
672 if (NULL_INTERVAL_P (i)) 672 if (NULL_INTERVAL_P (i))
673 return NULL_INTERVAL; 673 return NULL_INTERVAL;
@@ -742,7 +742,7 @@ previous_interval (register INTERVAL interval)
742 To speed up the process, we assume that the ->position of 742 To speed up the process, we assume that the ->position of
743 I and all its parents is already uptodate. */ 743 I and all its parents is already uptodate. */
744INTERVAL 744INTERVAL
745update_interval (register INTERVAL i, EMACS_INT pos) 745update_interval (register INTERVAL i, ptrdiff_t pos)
746{ 746{
747 if (NULL_INTERVAL_P (i)) 747 if (NULL_INTERVAL_P (i))
748 return NULL_INTERVAL; 748 return NULL_INTERVAL;
@@ -774,7 +774,7 @@ update_interval (register INTERVAL i, EMACS_INT pos)
774 i = i->right; /* Move to the right child */ 774 i = i->right; /* Move to the right child */
775 } 775 }
776 else if (NULL_PARENT (i)) 776 else if (NULL_PARENT (i))
777 error ("Point %"pI"d after end of properties", pos); 777 error ("Point %"pD"d after end of properties", pos);
778 else 778 else
779 i = INTERVAL_PARENT (i); 779 i = INTERVAL_PARENT (i);
780 continue; 780 continue;
@@ -799,10 +799,10 @@ update_interval (register INTERVAL i, EMACS_INT pos)
799 to the root. */ 799 to the root. */
800 800
801static INTERVAL 801static INTERVAL
802adjust_intervals_for_insertion (INTERVAL tree, EMACS_INT position, 802adjust_intervals_for_insertion (INTERVAL tree, ptrdiff_t position,
803 EMACS_INT length) 803 ptrdiff_t length)
804{ 804{
805 register EMACS_INT relative_position; 805 register ptrdiff_t relative_position;
806 register INTERVAL this; 806 register INTERVAL this;
807 807
808 if (TOTAL_LENGTH (tree) == 0) /* Paranoia */ 808 if (TOTAL_LENGTH (tree) == 0) /* Paranoia */
@@ -861,13 +861,13 @@ adjust_intervals_for_insertion (INTERVAL tree, EMACS_INT position,
861 861
862static INTERVAL 862static INTERVAL
863adjust_intervals_for_insertion (INTERVAL tree, 863adjust_intervals_for_insertion (INTERVAL tree,
864 EMACS_INT position, EMACS_INT length) 864 ptrdiff_t position, ptrdiff_t length)
865{ 865{
866 register INTERVAL i; 866 register INTERVAL i;
867 register INTERVAL temp; 867 register INTERVAL temp;
868 int eobp = 0; 868 int eobp = 0;
869 Lisp_Object parent; 869 Lisp_Object parent;
870 EMACS_INT offset; 870 ptrdiff_t offset;
871 871
872 if (TOTAL_LENGTH (tree) == 0) /* Paranoia */ 872 if (TOTAL_LENGTH (tree) == 0) /* Paranoia */
873 abort (); 873 abort ();
@@ -1226,7 +1226,7 @@ static INTERVAL
1226delete_node (register INTERVAL i) 1226delete_node (register INTERVAL i)
1227{ 1227{
1228 register INTERVAL migrate, this; 1228 register INTERVAL migrate, this;
1229 register EMACS_INT migrate_amt; 1229 register ptrdiff_t migrate_amt;
1230 1230
1231 if (NULL_INTERVAL_P (i->left)) 1231 if (NULL_INTERVAL_P (i->left))
1232 return i->right; 1232 return i->right;
@@ -1259,7 +1259,7 @@ static void
1259delete_interval (register INTERVAL i) 1259delete_interval (register INTERVAL i)
1260{ 1260{
1261 register INTERVAL parent; 1261 register INTERVAL parent;
1262 EMACS_INT amt = LENGTH (i); 1262 ptrdiff_t amt = LENGTH (i);
1263 1263
1264 if (amt > 0) /* Only used on zero-length intervals now. */ 1264 if (amt > 0) /* Only used on zero-length intervals now. */
1265 abort (); 1265 abort ();
@@ -1309,11 +1309,11 @@ delete_interval (register INTERVAL i)
1309 Do this by recursing down TREE to the interval in question, and 1309 Do this by recursing down TREE to the interval in question, and
1310 deleting the appropriate amount of text. */ 1310 deleting the appropriate amount of text. */
1311 1311
1312static EMACS_INT 1312static ptrdiff_t
1313interval_deletion_adjustment (register INTERVAL tree, register EMACS_INT from, 1313interval_deletion_adjustment (register INTERVAL tree, register ptrdiff_t from,
1314 register EMACS_INT amount) 1314 register ptrdiff_t amount)
1315{ 1315{
1316 register EMACS_INT relative_position = from; 1316 register ptrdiff_t relative_position = from;
1317 1317
1318 if (NULL_INTERVAL_P (tree)) 1318 if (NULL_INTERVAL_P (tree))
1319 return 0; 1319 return 0;
@@ -1321,7 +1321,7 @@ interval_deletion_adjustment (register INTERVAL tree, register EMACS_INT from,
1321 /* Left branch. */ 1321 /* Left branch. */
1322 if (relative_position < LEFT_TOTAL_LENGTH (tree)) 1322 if (relative_position < LEFT_TOTAL_LENGTH (tree))
1323 { 1323 {
1324 EMACS_INT subtract = interval_deletion_adjustment (tree->left, 1324 ptrdiff_t subtract = interval_deletion_adjustment (tree->left,
1325 relative_position, 1325 relative_position,
1326 amount); 1326 amount);
1327 tree->total_length -= subtract; 1327 tree->total_length -= subtract;
@@ -1332,7 +1332,7 @@ interval_deletion_adjustment (register INTERVAL tree, register EMACS_INT from,
1332 else if (relative_position >= (TOTAL_LENGTH (tree) 1332 else if (relative_position >= (TOTAL_LENGTH (tree)
1333 - RIGHT_TOTAL_LENGTH (tree))) 1333 - RIGHT_TOTAL_LENGTH (tree)))
1334 { 1334 {
1335 EMACS_INT subtract; 1335 ptrdiff_t subtract;
1336 1336
1337 relative_position -= (tree->total_length 1337 relative_position -= (tree->total_length
1338 - RIGHT_TOTAL_LENGTH (tree)); 1338 - RIGHT_TOTAL_LENGTH (tree));
@@ -1347,7 +1347,7 @@ interval_deletion_adjustment (register INTERVAL tree, register EMACS_INT from,
1347 else 1347 else
1348 { 1348 {
1349 /* How much can we delete from this interval? */ 1349 /* How much can we delete from this interval? */
1350 EMACS_INT my_amount = ((tree->total_length 1350 ptrdiff_t my_amount = ((tree->total_length
1351 - RIGHT_TOTAL_LENGTH (tree)) 1351 - RIGHT_TOTAL_LENGTH (tree))
1352 - relative_position); 1352 - relative_position);
1353 1353
@@ -1372,12 +1372,12 @@ interval_deletion_adjustment (register INTERVAL tree, register EMACS_INT from,
1372 1372
1373static void 1373static void
1374adjust_intervals_for_deletion (struct buffer *buffer, 1374adjust_intervals_for_deletion (struct buffer *buffer,
1375 EMACS_INT start, EMACS_INT length) 1375 ptrdiff_t start, ptrdiff_t length)
1376{ 1376{
1377 register EMACS_INT left_to_delete = length; 1377 register ptrdiff_t left_to_delete = length;
1378 register INTERVAL tree = BUF_INTERVALS (buffer); 1378 register INTERVAL tree = BUF_INTERVALS (buffer);
1379 Lisp_Object parent; 1379 Lisp_Object parent;
1380 EMACS_INT offset; 1380 ptrdiff_t offset;
1381 1381
1382 GET_INTERVAL_OBJECT (parent, tree); 1382 GET_INTERVAL_OBJECT (parent, tree);
1383 offset = (BUFFERP (parent) ? BUF_BEG (XBUFFER (parent)) : 0); 1383 offset = (BUFFERP (parent) ? BUF_BEG (XBUFFER (parent)) : 0);
@@ -1427,7 +1427,7 @@ adjust_intervals_for_deletion (struct buffer *buffer,
1427 adjust_intervals_for_deletion) from a non-static inline function. */ 1427 adjust_intervals_for_deletion) from a non-static inline function. */
1428 1428
1429void 1429void
1430offset_intervals (struct buffer *buffer, EMACS_INT start, EMACS_INT length) 1430offset_intervals (struct buffer *buffer, ptrdiff_t start, ptrdiff_t length)
1431{ 1431{
1432 if (NULL_INTERVAL_P (BUF_INTERVALS (buffer)) || length == 0) 1432 if (NULL_INTERVAL_P (BUF_INTERVALS (buffer)) || length == 0)
1433 return; 1433 return;
@@ -1436,7 +1436,7 @@ offset_intervals (struct buffer *buffer, EMACS_INT start, EMACS_INT length)
1436 adjust_intervals_for_insertion (BUF_INTERVALS (buffer), start, length); 1436 adjust_intervals_for_insertion (BUF_INTERVALS (buffer), start, length);
1437 else 1437 else
1438 { 1438 {
1439 IF_LINT (if (length < - TYPE_MAXIMUM (EMACS_INT)) abort ();) 1439 IF_LINT (if (length < - TYPE_MAXIMUM (ptrdiff_t)) abort ();)
1440 adjust_intervals_for_deletion (buffer, start, -length); 1440 adjust_intervals_for_deletion (buffer, start, -length);
1441 } 1441 }
1442} 1442}
@@ -1453,7 +1453,7 @@ offset_intervals (struct buffer *buffer, EMACS_INT start, EMACS_INT length)
1453static INTERVAL 1453static INTERVAL
1454merge_interval_right (register INTERVAL i) 1454merge_interval_right (register INTERVAL i)
1455{ 1455{
1456 register EMACS_INT absorb = LENGTH (i); 1456 register ptrdiff_t absorb = LENGTH (i);
1457 register INTERVAL successor; 1457 register INTERVAL successor;
1458 1458
1459 /* Zero out this interval. */ 1459 /* Zero out this interval. */
@@ -1509,7 +1509,7 @@ merge_interval_right (register INTERVAL i)
1509INTERVAL 1509INTERVAL
1510merge_interval_left (register INTERVAL i) 1510merge_interval_left (register INTERVAL i)
1511{ 1511{
1512 register EMACS_INT absorb = LENGTH (i); 1512 register ptrdiff_t absorb = LENGTH (i);
1513 register INTERVAL predecessor; 1513 register INTERVAL predecessor;
1514 1514
1515 /* Zero out this interval. */ 1515 /* Zero out this interval. */
@@ -1603,7 +1603,7 @@ reproduce_tree_obj (INTERVAL source, Lisp_Object parent)
1603 interval. */ 1603 interval. */
1604 1604
1605static INTERVAL 1605static INTERVAL
1606make_new_interval (INTERVAL intervals, EMACS_INT start, EMACS_INT length) 1606make_new_interval (INTERVAL intervals, ptrdiff_t start, ptrdiff_t length)
1607{ 1607{
1608 INTERVAL slot; 1608 INTERVAL slot;
1609 1609
@@ -1675,13 +1675,13 @@ make_new_interval (INTERVAL intervals, EMACS_INT start, EMACS_INT length)
1675 text... */ 1675 text... */
1676 1676
1677void 1677void
1678graft_intervals_into_buffer (INTERVAL source, EMACS_INT position, 1678graft_intervals_into_buffer (INTERVAL source, ptrdiff_t position,
1679 EMACS_INT length, struct buffer *buffer, 1679 ptrdiff_t length, struct buffer *buffer,
1680 int inherit) 1680 int inherit)
1681{ 1681{
1682 register INTERVAL under, over, this; 1682 register INTERVAL under, over, this;
1683 register INTERVAL tree; 1683 register INTERVAL tree;
1684 EMACS_INT over_used; 1684 ptrdiff_t over_used;
1685 1685
1686 tree = BUF_INTERVALS (buffer); 1686 tree = BUF_INTERVALS (buffer);
1687 1687
@@ -1863,7 +1863,7 @@ lookup_char_property (Lisp_Object plist, register Lisp_Object prop, int textprop
1863 1863
1864void 1864void
1865temp_set_point_both (struct buffer *buffer, 1865temp_set_point_both (struct buffer *buffer,
1866 EMACS_INT charpos, EMACS_INT bytepos) 1866 ptrdiff_t charpos, ptrdiff_t bytepos)
1867{ 1867{
1868 /* In a single-byte buffer, the two positions must be equal. */ 1868 /* In a single-byte buffer, the two positions must be equal. */
1869 if (BUF_ZV (buffer) == BUF_ZV_BYTE (buffer) 1869 if (BUF_ZV (buffer) == BUF_ZV_BYTE (buffer)
@@ -1882,7 +1882,7 @@ temp_set_point_both (struct buffer *buffer,
1882/* Set point "temporarily", without checking any text properties. */ 1882/* Set point "temporarily", without checking any text properties. */
1883 1883
1884void 1884void
1885temp_set_point (struct buffer *buffer, EMACS_INT charpos) 1885temp_set_point (struct buffer *buffer, ptrdiff_t charpos)
1886{ 1886{
1887 temp_set_point_both (buffer, charpos, 1887 temp_set_point_both (buffer, charpos,
1888 buf_charpos_to_bytepos (buffer, charpos)); 1888 buf_charpos_to_bytepos (buffer, charpos));
@@ -1892,7 +1892,7 @@ temp_set_point (struct buffer *buffer, EMACS_INT charpos)
1892 before an intangible character, move to an ok place. */ 1892 before an intangible character, move to an ok place. */
1893 1893
1894void 1894void
1895set_point (EMACS_INT charpos) 1895set_point (ptrdiff_t charpos)
1896{ 1896{
1897 set_point_both (charpos, buf_charpos_to_bytepos (current_buffer, charpos)); 1897 set_point_both (charpos, buf_charpos_to_bytepos (current_buffer, charpos));
1898} 1898}
@@ -1908,8 +1908,8 @@ set_point (EMACS_INT charpos)
1908 Note that `stickiness' is determined by overlay marker insertion types, 1908 Note that `stickiness' is determined by overlay marker insertion types,
1909 if the invisible property comes from an overlay. */ 1909 if the invisible property comes from an overlay. */
1910 1910
1911static EMACS_INT 1911static ptrdiff_t
1912adjust_for_invis_intang (EMACS_INT pos, EMACS_INT test_offs, EMACS_INT adj, 1912adjust_for_invis_intang (ptrdiff_t pos, ptrdiff_t test_offs, ptrdiff_t adj,
1913 int test_intang) 1913 int test_intang)
1914{ 1914{
1915 Lisp_Object invis_propval, invis_overlay; 1915 Lisp_Object invis_propval, invis_overlay;
@@ -1948,18 +1948,18 @@ adjust_for_invis_intang (EMACS_INT pos, EMACS_INT test_offs, EMACS_INT adj,
1948 before an intangible character, move to an ok place. */ 1948 before an intangible character, move to an ok place. */
1949 1949
1950void 1950void
1951set_point_both (EMACS_INT charpos, EMACS_INT bytepos) 1951set_point_both (ptrdiff_t charpos, ptrdiff_t bytepos)
1952{ 1952{
1953 register INTERVAL to, from, toprev, fromprev; 1953 register INTERVAL to, from, toprev, fromprev;
1954 EMACS_INT buffer_point; 1954 ptrdiff_t buffer_point;
1955 EMACS_INT old_position = PT; 1955 ptrdiff_t old_position = PT;
1956 /* This ensures that we move forward past intangible text when the 1956 /* This ensures that we move forward past intangible text when the
1957 initial position is the same as the destination, in the rare 1957 initial position is the same as the destination, in the rare
1958 instances where this is important, e.g. in line-move-finish 1958 instances where this is important, e.g. in line-move-finish
1959 (simple.el). */ 1959 (simple.el). */
1960 int backwards = (charpos < old_position ? 1 : 0); 1960 int backwards = (charpos < old_position ? 1 : 0);
1961 int have_overlays; 1961 int have_overlays;
1962 EMACS_INT original_position; 1962 ptrdiff_t original_position;
1963 1963
1964 BVAR (current_buffer, point_before_scroll) = Qnil; 1964 BVAR (current_buffer, point_before_scroll) = Qnil;
1965 1965
@@ -2172,7 +2172,7 @@ set_point_both (EMACS_INT charpos, EMACS_INT bytepos)
2172 segment that reaches all the way to point. */ 2172 segment that reaches all the way to point. */
2173 2173
2174void 2174void
2175move_if_not_intangible (EMACS_INT position) 2175move_if_not_intangible (ptrdiff_t position)
2176{ 2176{
2177 Lisp_Object pos; 2177 Lisp_Object pos;
2178 Lisp_Object intangible_propval; 2178 Lisp_Object intangible_propval;
@@ -2235,8 +2235,8 @@ move_if_not_intangible (EMACS_INT position)
2235 nil means the current buffer. */ 2235 nil means the current buffer. */
2236 2236
2237int 2237int
2238get_property_and_range (EMACS_INT pos, Lisp_Object prop, Lisp_Object *val, 2238get_property_and_range (ptrdiff_t pos, Lisp_Object prop, Lisp_Object *val,
2239 EMACS_INT *start, EMACS_INT *end, Lisp_Object object) 2239 ptrdiff_t *start, ptrdiff_t *end, Lisp_Object object)
2240{ 2240{
2241 INTERVAL i, prev, next; 2241 INTERVAL i, prev, next;
2242 2242
@@ -2279,11 +2279,11 @@ get_property_and_range (EMACS_INT pos, Lisp_Object prop, Lisp_Object *val,
2279 POSITION must be in the accessible part of BUFFER. */ 2279 POSITION must be in the accessible part of BUFFER. */
2280 2280
2281Lisp_Object 2281Lisp_Object
2282get_local_map (register EMACS_INT position, register struct buffer *buffer, 2282get_local_map (register ptrdiff_t position, register struct buffer *buffer,
2283 Lisp_Object type) 2283 Lisp_Object type)
2284{ 2284{
2285 Lisp_Object prop, lispy_position, lispy_buffer; 2285 Lisp_Object prop, lispy_position, lispy_buffer;
2286 EMACS_INT old_begv, old_zv, old_begv_byte, old_zv_byte; 2286 ptrdiff_t old_begv, old_zv, old_begv_byte, old_zv_byte;
2287 2287
2288 /* Perhaps we should just change `position' to the limit. */ 2288 /* Perhaps we should just change `position' to the limit. */
2289 if (position > BUF_ZV (buffer) || position < BUF_BEGV (buffer)) 2289 if (position > BUF_ZV (buffer) || position < BUF_BEGV (buffer))
@@ -2330,10 +2330,10 @@ get_local_map (register EMACS_INT position, register struct buffer *buffer,
2330 The new interval tree has no parent and has a starting-position of 0. */ 2330 The new interval tree has no parent and has a starting-position of 0. */
2331 2331
2332INTERVAL 2332INTERVAL
2333copy_intervals (INTERVAL tree, EMACS_INT start, EMACS_INT length) 2333copy_intervals (INTERVAL tree, ptrdiff_t start, ptrdiff_t length)
2334{ 2334{
2335 register INTERVAL i, new, t; 2335 register INTERVAL i, new, t;
2336 register EMACS_INT got, prevlen; 2336 register ptrdiff_t got, prevlen;
2337 2337
2338 if (NULL_INTERVAL_P (tree) || length <= 0) 2338 if (NULL_INTERVAL_P (tree) || length <= 0)
2339 return NULL_INTERVAL; 2339 return NULL_INTERVAL;
@@ -2372,7 +2372,7 @@ copy_intervals (INTERVAL tree, EMACS_INT start, EMACS_INT length)
2372 2372
2373void 2373void
2374copy_intervals_to_string (Lisp_Object string, struct buffer *buffer, 2374copy_intervals_to_string (Lisp_Object string, struct buffer *buffer,
2375 EMACS_INT position, EMACS_INT length) 2375 ptrdiff_t position, ptrdiff_t length)
2376{ 2376{
2377 INTERVAL interval_copy = copy_intervals (BUF_INTERVALS (buffer), 2377 INTERVAL interval_copy = copy_intervals (BUF_INTERVALS (buffer),
2378 position, length); 2378 position, length);
@@ -2390,8 +2390,8 @@ int
2390compare_string_intervals (Lisp_Object s1, Lisp_Object s2) 2390compare_string_intervals (Lisp_Object s1, Lisp_Object s2)
2391{ 2391{
2392 INTERVAL i1, i2; 2392 INTERVAL i1, i2;
2393 EMACS_INT pos = 0; 2393 ptrdiff_t pos = 0;
2394 EMACS_INT end = SCHARS (s1); 2394 ptrdiff_t end = SCHARS (s1);
2395 2395
2396 i1 = find_interval (STRING_INTERVALS (s1), 0); 2396 i1 = find_interval (STRING_INTERVALS (s1), 0);
2397 i2 = find_interval (STRING_INTERVALS (s2), 0); 2397 i2 = find_interval (STRING_INTERVALS (s2), 0);
@@ -2399,9 +2399,9 @@ compare_string_intervals (Lisp_Object s1, Lisp_Object s2)
2399 while (pos < end) 2399 while (pos < end)
2400 { 2400 {
2401 /* Determine how far we can go before we reach the end of I1 or I2. */ 2401 /* Determine how far we can go before we reach the end of I1 or I2. */
2402 EMACS_INT len1 = (i1 != 0 ? INTERVAL_LAST_POS (i1) : end) - pos; 2402 ptrdiff_t len1 = (i1 != 0 ? INTERVAL_LAST_POS (i1) : end) - pos;
2403 EMACS_INT len2 = (i2 != 0 ? INTERVAL_LAST_POS (i2) : end) - pos; 2403 ptrdiff_t len2 = (i2 != 0 ? INTERVAL_LAST_POS (i2) : end) - pos;
2404 EMACS_INT distance = min (len1, len2); 2404 ptrdiff_t distance = min (len1, len2);
2405 2405
2406 /* If we ever find a mismatch between the strings, 2406 /* If we ever find a mismatch between the strings,
2407 they differ. */ 2407 they differ. */
@@ -2426,8 +2426,8 @@ compare_string_intervals (Lisp_Object s1, Lisp_Object s2)
2426 2426
2427static void 2427static void
2428set_intervals_multibyte_1 (INTERVAL i, int multi_flag, 2428set_intervals_multibyte_1 (INTERVAL i, int multi_flag,
2429 EMACS_INT start, EMACS_INT start_byte, 2429 ptrdiff_t start, ptrdiff_t start_byte,
2430 EMACS_INT end, EMACS_INT end_byte) 2430 ptrdiff_t end, ptrdiff_t end_byte)
2431{ 2431{
2432 /* Fix the length of this interval. */ 2432 /* Fix the length of this interval. */
2433 if (multi_flag) 2433 if (multi_flag)
@@ -2445,11 +2445,11 @@ set_intervals_multibyte_1 (INTERVAL i, int multi_flag,
2445 /* Recursively fix the length of the subintervals. */ 2445 /* Recursively fix the length of the subintervals. */
2446 if (i->left) 2446 if (i->left)
2447 { 2447 {
2448 EMACS_INT left_end, left_end_byte; 2448 ptrdiff_t left_end, left_end_byte;
2449 2449
2450 if (multi_flag) 2450 if (multi_flag)
2451 { 2451 {
2452 EMACS_INT temp; 2452 ptrdiff_t temp;
2453 left_end_byte = start_byte + LEFT_TOTAL_LENGTH (i); 2453 left_end_byte = start_byte + LEFT_TOTAL_LENGTH (i);
2454 left_end = BYTE_TO_CHAR (left_end_byte); 2454 left_end = BYTE_TO_CHAR (left_end_byte);
2455 2455
@@ -2478,11 +2478,11 @@ set_intervals_multibyte_1 (INTERVAL i, int multi_flag,
2478 } 2478 }
2479 if (i->right) 2479 if (i->right)
2480 { 2480 {
2481 EMACS_INT right_start_byte, right_start; 2481 ptrdiff_t right_start_byte, right_start;
2482 2482
2483 if (multi_flag) 2483 if (multi_flag)
2484 { 2484 {
2485 EMACS_INT temp; 2485 ptrdiff_t temp;
2486 2486
2487 right_start_byte = end_byte - RIGHT_TOTAL_LENGTH (i); 2487 right_start_byte = end_byte - RIGHT_TOTAL_LENGTH (i);
2488 right_start = BYTE_TO_CHAR (right_start_byte); 2488 right_start = BYTE_TO_CHAR (right_start_byte);