emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r103932: Fix regex.c, syntax.c and fr


From: Eli Zaretskii
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r103932: Fix regex.c, syntax.c and friends for buffers > 2GB.
Date: Sat, 16 Apr 2011 21:26:30 +0300
User-agent: Bazaar (2.3.1)

------------------------------------------------------------
revno: 103932
committer: Eli Zaretskii <address@hidden>
branch nick: trunk
timestamp: Sat 2011-04-16 21:26:30 +0300
message:
  Fix regex.c, syntax.c and friends for buffers > 2GB.
  
   src/syntax.h (struct gl_state_s): Declare character position members
   EMACS_INT.
   src/syntax.c (update_syntax_table): Declare 2nd argument EMACS_INT.
   src/textprop.c (verify_interval_modification, interval_of): Declare
   arguments EMACS_INT.
   src/intervals.c (adjust_intervals_for_insertion): Declare arguments
   EMACS_INT.
   src/intervals.h (CHECK_TOTAL_LENGTH): Cast to EMACS_INT, not `int'.
   src/indent.c (Fvertical_motion): Local variable it_start is now
   EMACS_INT.
   src/regex.c (re_match, re_match_2, re_match_2_internal)
   (bcmp_translate, regcomp, regexec, print_double_string)
   (group_in_compile_stack, re_search, re_search_2, regex_compile)
   (re_compile_pattern, re_exec): Declare arguments and local
   variables `size_t' and `ssize_t' and return values `regoff_t', as
   appropriate.
   (POP_FAILURE_REG_OR_COUNT) <pfreg>: Declare `long'.
   (CHECK_INFINITE_LOOP) <failure>: Declare `ssize_t'.
   <compile_stack_type>: `size' and `avail' are now `size_t'.
   src/regex.h <regoff_t>: Use ssize_t, not int.
   (re_search, re_search_2, re_match, re_match_2): Arguments that
   specify buffer/string position and length are now ssize_t and
   size_t.  Return type is regoff_t.
modified:
  src/ChangeLog
  src/indent.c
  src/intervals.c
  src/intervals.h
  src/regex.c
  src/regex.h
  src/syntax.c
  src/syntax.h
  src/textprop.c
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2011-04-16 03:44:06 +0000
+++ b/src/ChangeLog     2011-04-16 18:26:30 +0000
@@ -1,3 +1,37 @@
+2011-04-16  Eli Zaretskii  <address@hidden>
+
+       Fix regex.c, syntax.c and friends for buffers > 2GB.
+       * syntax.h (struct gl_state_s): Declare character position members
+       EMACS_INT.
+
+       * syntax.c (update_syntax_table): Declare 2nd argument EMACS_INT.
+
+       * textprop.c (verify_interval_modification, interval_of): Declare
+       arguments EMACS_INT.
+
+       * intervals.c (adjust_intervals_for_insertion): Declare arguments
+       EMACS_INT.
+
+       * intervals.h (CHECK_TOTAL_LENGTH): Cast to EMACS_INT, not `int'.
+
+       * indent.c (Fvertical_motion): Local variable it_start is now
+       EMACS_INT.
+
+       * regex.c (re_match, re_match_2, re_match_2_internal)
+       (bcmp_translate, regcomp, regexec, print_double_string)
+       (group_in_compile_stack, re_search, re_search_2, regex_compile)
+       (re_compile_pattern, re_exec): Declare arguments and local
+       variables `size_t' and `ssize_t' and return values `regoff_t', as
+       appropriate.
+       (POP_FAILURE_REG_OR_COUNT) <pfreg>: Declare `long'.
+       (CHECK_INFINITE_LOOP) <failure>: Declare `ssize_t'.
+       <compile_stack_type>: `size' and `avail' are now `size_t'.
+
+       * regex.h <regoff_t>: Use ssize_t, not int.
+       (re_search, re_search_2, re_match, re_match_2): Arguments that
+       specify buffer/string position and length are now ssize_t and
+       size_t.  Return type is regoff_t.
+
 2011-04-16  Ben Key  <address@hidden>
 
        * nsfont.m: Fixed bugs in ns_get_family and

=== modified file 'src/indent.c'
--- a/src/indent.c      2011-04-14 05:04:02 +0000
+++ b/src/indent.c      2011-04-16 18:26:30 +0000
@@ -2026,7 +2026,8 @@
     }
   else
     {
-      int it_start, first_x, it_overshoot_expected IF_LINT (= 0);
+      EMACS_INT it_start;
+      int first_x, it_overshoot_expected IF_LINT (= 0);
 
       SET_TEXT_POS (pt, PT, PT_BYTE);
       start_display (&it, w, pt);

=== modified file 'src/intervals.c'
--- a/src/intervals.c   2011-04-14 00:55:09 +0000
+++ b/src/intervals.c   2011-04-16 18:26:30 +0000
@@ -805,9 +805,9 @@
 static INTERVAL
 adjust_intervals_for_insertion (tree, position, length)
      INTERVAL tree;
-     int position, length;
+     EMACS_INT position, length;
 {
-  register int relative_position;
+  register EMACS_INT relative_position;
   register INTERVAL this;
 
   if (TOTAL_LENGTH (tree) == 0)        /* Paranoia */

=== modified file 'src/intervals.h'
--- a/src/intervals.h   2011-04-14 00:55:09 +0000
+++ b/src/intervals.h   2011-04-16 18:26:30 +0000
@@ -161,12 +161,12 @@
    (INTERVAL_HAS_PARENT (i) ? INTERVAL_PARENT (i) : 0)
 
 /* Abort if interval I's size is negative.  */
-#define CHECK_TOTAL_LENGTH(i)         \
-  do                                  \
-    {                                 \
-      if ((int) (i)->total_length < 0) \
-       abort ();                      \
-    }                                 \
+#define CHECK_TOTAL_LENGTH(i)               \
+  do                                        \
+    {                                       \
+      if ((EMACS_INT) (i)->total_length < 0) \
+       abort ();                            \
+    }                                       \
   while (0)
 
 /* Reset this interval to its vanilla, or no-property state. */
@@ -269,7 +269,8 @@
 extern void offset_intervals (struct buffer *, EMACS_INT, EMACS_INT);
 extern void graft_intervals_into_buffer (INTERVAL, EMACS_INT, EMACS_INT,
                                          struct buffer *, int);
-extern void verify_interval_modification (struct buffer *, int, int);
+extern void verify_interval_modification (struct buffer *,
+                                         EMACS_INT, EMACS_INT);
 extern INTERVAL balance_intervals (INTERVAL);
 extern void copy_intervals_to_string (Lisp_Object, struct buffer *,
                                              EMACS_INT, EMACS_INT);
@@ -285,7 +286,7 @@
 extern void set_intervals_multibyte (int);
 extern INTERVAL validate_interval_range (Lisp_Object, Lisp_Object *,
                                          Lisp_Object *, int);
-extern INTERVAL interval_of (int, Lisp_Object);
+extern INTERVAL interval_of (EMACS_INT, Lisp_Object);
 
 /* Defined in xdisp.c */
 extern int invisible_p (Lisp_Object, Lisp_Object);

=== modified file 'src/regex.c'
--- a/src/regex.c       2011-03-15 21:33:24 +0000
+++ b/src/regex.c       2011-04-16 18:26:30 +0000
@@ -569,12 +569,12 @@
 #define false 0
 #define true 1
 
-static int re_match_2_internal _RE_ARGS ((struct re_pattern_buffer *bufp,
-                                       re_char *string1, int size1,
-                                       re_char *string2, int size2,
-                                       int pos,
-                                       struct re_registers *regs,
-                                       int stop));
+static regoff_t re_match_2_internal _RE_ARGS ((struct re_pattern_buffer *bufp,
+                                              re_char *string1, size_t size1,
+                                              re_char *string2, size_t size2,
+                                              ssize_t pos,
+                                              struct re_registers *regs,
+                                              ssize_t stop));
 
 /* These are the command codes that appear in compiled regular
    expressions.  Some opcodes are followed by argument bytes.  A
@@ -1230,10 +1230,10 @@
     re_char *where;
     re_char *string1;
     re_char *string2;
-    int size1;
-    int size2;
+    ssize_t size1;
+    ssize_t size2;
 {
-  int this_char;
+  ssize_t this_char;
 
   if (where == NULL)
     printf ("(null)");
@@ -1546,7 +1546,7 @@
 /* Pop a saved register off the stack.  */
 #define POP_FAILURE_REG_OR_COUNT()                                     \
 do {                                                                   \
-  int pfreg = POP_FAILURE_INT ();                                      \
+  long pfreg = POP_FAILURE_INT ();                                     \
   if (pfreg == -1)                                                     \
     {                                                                  \
       /* It's a counter.  */                                           \
@@ -1568,7 +1568,7 @@
 /* Check that we are not stuck in an infinite loop.  */
 #define CHECK_INFINITE_LOOP(pat_cur, string_place)                     \
 do {                                                                   \
-  int failure = TOP_FAILURE_HANDLE ();                                 \
+  ssize_t failure = TOP_FAILURE_HANDLE ();                             \
   /* Check for infinite matching loops */                              \
   while (failure > 0                                                   \
         && (FAILURE_STR (failure) == string_place                      \
@@ -1876,8 +1876,8 @@
 typedef struct
 {
   compile_stack_elt_t *stack;
-  unsigned size;
-  unsigned avail;                      /* Offset of next open position.  */
+  size_t size;
+  size_t avail;                        /* Offset of next open position.  */
 } compile_stack_type;
 
 
@@ -2779,7 +2779,7 @@
                if (many_times_ok)
                  {
                    boolean simple = skip_one_char (laststart) == b;
-                   unsigned int startoffset = 0;
+                   size_t startoffset = 0;
                    re_opcode_t ofj =
                      /* Check if the loop can match the empty string.  */
                      (simple || !analyse_first (laststart, b, NULL, 0))
@@ -3361,7 +3361,7 @@
                          _____ _____
                          |   | |   |
                          |   v |   v
-                        a | b   | c
+                       a | b   | c
 
                 If we are at `b', then fixup_alt_jump right now points to a
                 three-byte space after `a'.  We'll put in the jump, set
@@ -3905,7 +3905,7 @@
 static boolean
 group_in_compile_stack (compile_stack_type compile_stack, regnum_t regnum)
 {
-  int this_element;
+  ssize_t this_element;
 
   for (this_element = compile_stack.avail - 1;
        this_element >= 0;
@@ -4291,8 +4291,9 @@
 /* Like re_search_2, below, but only one string is specified, and
    doesn't let you say where to stop matching. */
 
-int
-re_search (struct re_pattern_buffer *bufp, const char *string, int size, int 
startpos, int range, struct re_registers *regs)
+regoff_t
+re_search (struct re_pattern_buffer *bufp, const char *string, size_t size,
+          ssize_t startpos, ssize_t range, struct re_registers *regs)
 {
   return re_search_2 (bufp, NULL, 0, string, size, startpos, range,
                      regs, size);
@@ -4328,16 +4329,18 @@
    found, -1 if no match, or -2 if error (such as failure
    stack overflow).  */
 
-int
-re_search_2 (struct re_pattern_buffer *bufp, const char *str1, int size1, 
const char *str2, int size2, int startpos, int range, struct re_registers 
*regs, int stop)
+regoff_t
+re_search_2 (struct re_pattern_buffer *bufp, const char *str1, size_t size1,
+            const char *str2, size_t size2, ssize_t startpos, ssize_t range,
+            struct re_registers *regs, ssize_t stop)
 {
-  int val;
+  regoff_t val;
   re_char *string1 = (re_char*) str1;
   re_char *string2 = (re_char*) str2;
   register char *fastmap = bufp->fastmap;
   register RE_TRANSLATE_TYPE translate = bufp->translate;
-  int total_size = size1 + size2;
-  int endpos = startpos + range;
+  size_t total_size = size1 + size2;
+  ssize_t endpos = startpos + range;
   boolean anchored_start;
   /* Nonzero if we are searching multibyte string.  */
   const boolean multibyte = RE_TARGET_MULTIBYTE_P (bufp);
@@ -4385,7 +4388,7 @@
 #ifdef emacs
   gl_state.object = re_match_object; /* Used by SYNTAX_TABLE_BYTE_TO_CHAR. */
   {
-    int charpos = SYNTAX_TABLE_BYTE_TO_CHAR (POS_AS_IN_BUFFER (startpos));
+    ssize_t charpos = SYNTAX_TABLE_BYTE_TO_CHAR (POS_AS_IN_BUFFER (startpos));
 
     SETUP_SYNTAX_TABLE_FOR_OBJECT (re_match_object, charpos, 1);
   }
@@ -4420,7 +4423,7 @@
          if (range > 0)        /* Searching forwards.  */
            {
              register int lim = 0;
-             int irange = range;
+             ssize_t irange = range;
 
              if (startpos < size1 && startpos + range >= size1)
                lim = range - (size1 - startpos);
@@ -4571,7 +4574,7 @@
 /* Declarations and macros for re_match_2.  */
 
 static int bcmp_translate _RE_ARGS((re_char *s1, re_char *s2,
-                                   register int len,
+                                   register ssize_t len,
                                    RE_TRANSLATE_TYPE translate,
                                    const int multibyte));
 
@@ -4873,11 +4876,11 @@
                           && ((p2[2 + idx] & ~ p1[2 + idx]) == 0))))
                  break;
 
-               if (idx == p2[1])
-                 {
-                   DEBUG_PRINT1 ("      No match => fast loop.\n");
-                   return 1;
-                 }
+             if (idx == p2[1])
+               {
+                 DEBUG_PRINT1 ("        No match => fast loop.\n");
+                 return 1;
+               }
              }
          }
       }
@@ -4941,12 +4944,12 @@
 #ifndef emacs  /* Emacs never uses this.  */
 /* re_match is like re_match_2 except it takes only a single string.  */
 
-int
+regoff_t
 re_match (struct re_pattern_buffer *bufp, const char *string,
-         int size, int pos, struct re_registers *regs)
+         size_t size, ssize_t pos, struct re_registers *regs)
 {
-  int result = re_match_2_internal (bufp, NULL, 0, (re_char*) string, size,
-                                   pos, regs, size);
+  regoff_t result = re_match_2_internal (bufp, NULL, 0, (re_char*) string,
+                                        size, pos, regs, size);
   return result;
 }
 WEAK_ALIAS (__re_match, re_match)
@@ -4971,13 +4974,15 @@
    failure stack overflowing).  Otherwise, we return the length of the
    matched substring.  */
 
-int
-re_match_2 (struct re_pattern_buffer *bufp, const char *string1, int size1, 
const char *string2, int size2, int pos, struct re_registers *regs, int stop)
+regoff_t
+re_match_2 (struct re_pattern_buffer *bufp, const char *string1,
+           size_t size1, const char *string2, size_t size2, ssize_t pos,
+           struct re_registers *regs, ssize_t stop)
 {
-  int result;
+  regoff_t result;
 
 #ifdef emacs
-  int charpos;
+  ssize_t charpos;
   gl_state.object = re_match_object; /* Used by SYNTAX_TABLE_BYTE_TO_CHAR. */
   charpos = SYNTAX_TABLE_BYTE_TO_CHAR (POS_AS_IN_BUFFER (pos));
   SETUP_SYNTAX_TABLE_FOR_OBJECT (re_match_object, charpos, 1);
@@ -4993,11 +4998,13 @@
 
 /* This is a separate function so that we can force an alloca cleanup
    afterwards.  */
-static int
-re_match_2_internal (struct re_pattern_buffer *bufp, const re_char *string1, 
int size1, const re_char *string2, int size2, int pos, struct re_registers 
*regs, int stop)
+static regoff_t
+re_match_2_internal (struct re_pattern_buffer *bufp, const re_char *string1,
+                    size_t size1, const re_char *string2, size_t size2,
+                    ssize_t pos, struct re_registers *regs, ssize_t stop)
 {
   /* General temporaries.  */
-  int mcnt;
+  ssize_t mcnt;
   size_t reg;
 
   /* Just past the end of the corresponding string.  */
@@ -5996,8 +6003,8 @@
                int s1, s2;
                int dummy;
 #ifdef emacs
-               int offset = PTR_TO_OFFSET (d - 1);
-               int charpos = SYNTAX_TABLE_BYTE_TO_CHAR (offset);
+               ssize_t offset = PTR_TO_OFFSET (d - 1);
+               ssize_t charpos = SYNTAX_TABLE_BYTE_TO_CHAR (offset);
                UPDATE_SYNTAX_TABLE (charpos);
 #endif
                GET_CHAR_BEFORE_2 (c1, d, string1, end1, string2, end2);
@@ -6038,8 +6045,8 @@
              int s1, s2;
              int dummy;
 #ifdef emacs
-             int offset = PTR_TO_OFFSET (d);
-             int charpos = SYNTAX_TABLE_BYTE_TO_CHAR (offset);
+             ssize_t offset = PTR_TO_OFFSET (d);
+             ssize_t charpos = SYNTAX_TABLE_BYTE_TO_CHAR (offset);
              UPDATE_SYNTAX_TABLE (charpos);
 #endif
              PREFETCH ();
@@ -6083,8 +6090,8 @@
              int s1, s2;
              int dummy;
 #ifdef emacs
-             int offset = PTR_TO_OFFSET (d) - 1;
-             int charpos = SYNTAX_TABLE_BYTE_TO_CHAR (offset);
+             ssize_t offset = PTR_TO_OFFSET (d) - 1;
+             ssize_t charpos = SYNTAX_TABLE_BYTE_TO_CHAR (offset);
              UPDATE_SYNTAX_TABLE (charpos);
 #endif
              GET_CHAR_BEFORE_2 (c1, d, string1, end1, string2, end2);
@@ -6127,8 +6134,8 @@
              re_wchar_t c1, c2;
              int s1, s2;
 #ifdef emacs
-             int offset = PTR_TO_OFFSET (d);
-             int charpos = SYNTAX_TABLE_BYTE_TO_CHAR (offset);
+             ssize_t offset = PTR_TO_OFFSET (d);
+             ssize_t charpos = SYNTAX_TABLE_BYTE_TO_CHAR (offset);
              UPDATE_SYNTAX_TABLE (charpos);
 #endif
              PREFETCH ();
@@ -6170,8 +6177,8 @@
              re_wchar_t c1, c2;
              int s1, s2;
 #ifdef emacs
-             int offset = PTR_TO_OFFSET (d) - 1;
-             int charpos = SYNTAX_TABLE_BYTE_TO_CHAR (offset);
+             ssize_t offset = PTR_TO_OFFSET (d) - 1;
+             ssize_t charpos = SYNTAX_TABLE_BYTE_TO_CHAR (offset);
              UPDATE_SYNTAX_TABLE (charpos);
 #endif
              GET_CHAR_BEFORE_2 (c1, d, string1, end1, string2, end2);
@@ -6207,8 +6214,8 @@
            PREFETCH ();
 #ifdef emacs
            {
-             int offset = PTR_TO_OFFSET (d);
-             int pos1 = SYNTAX_TABLE_BYTE_TO_CHAR (offset);
+             ssize_t offset = PTR_TO_OFFSET (d);
+             ssize_t pos1 = SYNTAX_TABLE_BYTE_TO_CHAR (offset);
              UPDATE_SYNTAX_TABLE (pos1);
            }
 #endif
@@ -6331,7 +6338,7 @@
    bytes; nonzero otherwise.  */
 
 static int
-bcmp_translate (const re_char *s1, const re_char *s2, register int len,
+bcmp_translate (const re_char *s1, const re_char *s2, register ssize_t len,
                RE_TRANSLATE_TYPE translate, const int target_multibyte)
 {
   register re_char *p1 = s1, *p2 = s2;
@@ -6373,7 +6380,8 @@
    We call regex_compile to do the actual compilation.  */
 
 const char *
-re_compile_pattern (const char *pattern, size_t length, struct 
re_pattern_buffer *bufp)
+re_compile_pattern (const char *pattern, size_t length,
+                   struct re_pattern_buffer *bufp)
 {
   reg_errcode_t ret;
 
@@ -6449,14 +6457,13 @@
 }
 
 
-int
+regoff_t
 # ifdef _LIBC
 weak_function
 # endif
-re_exec (s)
-    const char *s;
+re_exec (const char *s)
 {
-  const int len = strlen (s);
+  const size_t len = strlen (s);
   return
     0 <= re_search (&re_comp_buf, s, len, 0, len, (struct re_registers *) 0);
 }
@@ -6500,7 +6507,7 @@
    It returns 0 if it succeeds, nonzero if it doesn't.  (See regex.h for
    the return codes and their meanings.)  */
 
-int
+reg_errcode_t
 regcomp (regex_t *__restrict preg, const char *__restrict pattern,
         int cflags)
 {
@@ -6564,7 +6571,7 @@
          preg->fastmap = NULL;
        }
     }
-  return (int) ret;
+  return ret;
 }
 WEAK_ALIAS (__regcomp, regcomp)
 
@@ -6583,14 +6590,14 @@
 
    We return 0 if we find a match and REG_NOMATCH if not.  */
 
-int
+reg_errcode_t
 regexec (const regex_t *__restrict preg, const char *__restrict string,
         size_t nmatch, regmatch_t pmatch[__restrict_arr], int eflags)
 {
-  int ret;
+  reg_errcode_t ret;
   struct re_registers regs;
   regex_t private_preg;
-  int len = strlen (string);
+  size_t len = strlen (string);
   boolean want_reg_info = !preg->no_sub && nmatch > 0 && pmatch;
 
   private_preg = *preg;
@@ -6608,7 +6615,7 @@
       regs.num_regs = nmatch;
       regs.start = TALLOC (nmatch * 2, regoff_t);
       if (regs.start == NULL)
-       return (int) REG_NOMATCH;
+       return REG_NOMATCH;
       regs.end = regs.start + nmatch;
     }
 
@@ -6645,7 +6652,7 @@
     }
 
   /* We want zero return to mean success, unlike `re_search'.  */
-  return ret >= 0 ? (int) REG_NOERROR : (int) REG_NOMATCH;
+  return ret >= 0 ? REG_NOERROR : REG_NOMATCH;
 }
 WEAK_ALIAS (__regexec, regexec)
 

=== modified file 'src/regex.h'
--- a/src/regex.h       2011-01-25 04:08:28 +0000
+++ b/src/regex.h       2011-04-16 18:26:30 +0000
@@ -414,8 +414,12 @@
 
 typedef struct re_pattern_buffer regex_t;
 
-/* Type for byte offsets within the string.  POSIX mandates this.  */
-typedef int regoff_t;
+/* Type for byte offsets within the string.  POSIX mandates this to be an int,
+   but the Open Group has signalled its intention to change the requirement to
+   be that regoff_t be at least as wide as ptrdiff_t and ssize_t.  Current
+   gnulib sources also use ssize_t, and we need this for supporting buffers and
+   strings > 2GB on 64-bit hosts.  */
+typedef ssize_t regoff_t;
 
 
 /* This is the structure we store register match data in.  See
@@ -486,31 +490,33 @@
    characters.  Return the starting position of the match, -1 for no
    match, or -2 for an internal error.  Also return register
    information in REGS (if REGS and BUFFER->no_sub are nonzero).  */
-extern int re_search
+extern regoff_t re_search
   _RE_ARGS ((struct re_pattern_buffer *buffer, const char *string,
-            int length, int start, int range, struct re_registers *regs));
+            size_t length, ssize_t start, ssize_t range,
+            struct re_registers *regs));
 
 
 /* Like `re_search', but search in the concatenation of STRING1 and
    STRING2.  Also, stop searching at index START + STOP.  */
-extern int re_search_2
+extern regoff_t re_search_2
   _RE_ARGS ((struct re_pattern_buffer *buffer, const char *string1,
-             int length1, const char *string2, int length2,
-             int start, int range, struct re_registers *regs, int stop));
+             size_t length1, const char *string2, size_t length2,
+             ssize_t start, ssize_t range, struct re_registers *regs,
+            ssize_t stop));
 
 
 /* Like `re_search', but return how many characters in STRING the regexp
    in BUFFER matched, starting at position START.  */
-extern int re_match
+extern regoff_t re_match
   _RE_ARGS ((struct re_pattern_buffer *buffer, const char *string,
-             int length, int start, struct re_registers *regs));
+             size_t length, ssize_t start, struct re_registers *regs));
 
 
 /* Relates to `re_match' as `re_search_2' relates to `re_search'.  */
-extern int re_match_2
+extern regoff_t re_match_2
   _RE_ARGS ((struct re_pattern_buffer *buffer, const char *string1,
-             int length1, const char *string2, int length2,
-             int start, struct re_registers *regs, int stop));
+             size_t length1, const char *string2, size_t length2,
+             ssize_t start, struct re_registers *regs, ssize_t stop));
 
 
 /* Set REGS to hold NUM_REGS registers, storing them in STARTS and
@@ -556,14 +562,15 @@
 #endif
 
 /* POSIX compatibility.  */
-extern int regcomp _RE_ARGS ((regex_t *__restrict __preg,
-                             const char *__restrict __pattern,
-                             int __cflags));
+extern reg_errcode_t regcomp _RE_ARGS ((regex_t *__restrict __preg,
+                                       const char *__restrict __pattern,
+                                       int __cflags));
 
-extern int regexec _RE_ARGS ((const regex_t *__restrict __preg,
-                             const char *__restrict __string, size_t __nmatch,
-                             regmatch_t __pmatch[__restrict_arr],
-                             int __eflags));
+extern reg_errcode_t regexec _RE_ARGS ((const regex_t *__restrict __preg,
+                                       const char *__restrict __string,
+                                       size_t __nmatch,
+                                       regmatch_t __pmatch[__restrict_arr],
+                                       int __eflags));
 
 extern size_t regerror _RE_ARGS ((int __errcode, const regex_t *__preg,
                                  char *__errbuf, size_t __errbuf_size));

=== modified file 'src/syntax.c'
--- a/src/syntax.c      2011-04-14 19:34:42 +0000
+++ b/src/syntax.c      2011-04-16 18:26:30 +0000
@@ -175,7 +175,7 @@
    start/end of OBJECT.  */
 
 void
-update_syntax_table (EMACS_INT charpos, int count, int init,
+update_syntax_table (EMACS_INT charpos, EMACS_INT count, int init,
                     Lisp_Object object)
 {
   Lisp_Object tmp_table;

=== modified file 'src/syntax.h'
--- a/src/syntax.h      2011-04-11 03:39:45 +0000
+++ b/src/syntax.h      2011-04-16 18:26:30 +0000
@@ -19,7 +19,7 @@
 along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
 
-extern void update_syntax_table (EMACS_INT, int, int, Lisp_Object);
+extern void update_syntax_table (EMACS_INT, EMACS_INT, int, Lisp_Object);
 
 /* The standard syntax table is stored where it will automatically
    be used in all new buffers.  */
@@ -276,15 +276,15 @@
 struct gl_state_s
 {
   Lisp_Object object;                  /* The object we are scanning. */
-  int start;                           /* Where to stop. */
-  int stop;                            /* Where to stop. */
+  EMACS_INT start;                     /* Where to stop. */
+  EMACS_INT stop;                      /* Where to stop. */
   int use_global;                      /* Whether to use global_code
                                           or c_s_t. */
   Lisp_Object global_code;             /* Syntax code of current char. */
   Lisp_Object current_syntax_table;    /* Syntax table for current pos. */
   Lisp_Object old_prop;                        /* Syntax-table prop at prev 
pos. */
-  int b_property;                      /* First index where c_s_t is valid. */
-  int e_property;                      /* First index where c_s_t is
+  EMACS_INT b_property;                        /* First index where c_s_t is 
valid. */
+  EMACS_INT e_property;                        /* First index where c_s_t is
                                           not valid. */
   INTERVAL forward_i;                  /* Where to start lookup on forward */
   INTERVAL backward_i;                 /* or backward movement.  The
@@ -294,7 +294,7 @@
                                           intervals too, depending
                                           on: */
   /* Offset for positions specified to UPDATE_SYNTAX_TABLE.  */
-  int offset;
+  EMACS_INT offset;
 };
 
 extern struct gl_state_s gl_state;

=== modified file 'src/textprop.c'
--- a/src/textprop.c    2011-04-14 19:34:42 +0000
+++ b/src/textprop.c    2011-04-16 18:26:30 +0000
@@ -514,7 +514,7 @@
    POSITION is BEG-based.  */
 
 INTERVAL
-interval_of (int position, Lisp_Object object)
+interval_of (EMACS_INT position, Lisp_Object object)
 {
   register INTERVAL i;
   EMACS_INT beg, end;
@@ -2012,7 +2012,8 @@
    those hooks in order, with START and END - 1 as arguments.  */
 
 void
-verify_interval_modification (struct buffer *buf, int start, int end)
+verify_interval_modification (struct buffer *buf,
+                             EMACS_INT start, EMACS_INT end)
 {
   register INTERVAL intervals = BUF_INTERVALS (buf);
   register INTERVAL i;


reply via email to

[Prev in Thread] Current Thread [Next in Thread]