aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRichard M. Stallman1998-06-06 21:59:21 +0000
committerRichard M. Stallman1998-06-06 21:59:21 +0000
commit7e95234e31ef8a0e7b36859adf00c44311c219a4 (patch)
tree252e2df33ff245913622def4a502f7c1c2cb6991 /src
parent707ee44899588036112f16d5c86deaf6fc534bce (diff)
downloademacs-7e95234e31ef8a0e7b36859adf00c44311c219a4.tar.gz
emacs-7e95234e31ef8a0e7b36859adf00c44311c219a4.zip
(POS_AS_IN_BUFFER): Add 1 only if operating on a buffer.
(re_match_2, re_search_2): Adjust startpos or pos by 1 only if acting on a buffer. nil for re_match_object means a buffer. (re_match_2_internal <notwordbeg>): Assume POS1 is positive.
Diffstat (limited to 'src')
-rw-r--r--src/regex.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/regex.c b/src/regex.c
index a638e1734dd..2a260376833 100644
--- a/src/regex.c
+++ b/src/regex.c
@@ -31,7 +31,7 @@
31#define PTR_TO_OFFSET(d) \ 31#define PTR_TO_OFFSET(d) \
32 POS_AS_IN_BUFFER (MATCHING_IN_FIRST_STRING \ 32 POS_AS_IN_BUFFER (MATCHING_IN_FIRST_STRING \
33 ? (d) - string1 : (d) - (string2 - size1)) 33 ? (d) - string1 : (d) - (string2 - size1))
34#define POS_AS_IN_BUFFER(p) ((p) + 1) 34#define POS_AS_IN_BUFFER(p) ((p) + (NILP (re_match_object) || BUFFERP (re_match_object)))
35 35
36#ifdef HAVE_CONFIG_H 36#ifdef HAVE_CONFIG_H
37#include <config.h> 37#include <config.h>
@@ -3742,8 +3742,8 @@ re_search_2 (bufp, string1, size1, string2, size2, startpos, range, regs, stop)
3742#ifdef emacs 3742#ifdef emacs
3743 gl_state.object = re_match_object; 3743 gl_state.object = re_match_object;
3744 { 3744 {
3745 int charpos 3745 int adjpos = NILP (re_match_object) || BUFFERP (re_match_object);
3746 = SYNTAX_TABLE_BYTE_TO_CHAR (startpos > 0 ? startpos : startpos + 1); 3746 int charpos = SYNTAX_TABLE_BYTE_TO_CHAR (startpos + adjpos);
3747 3747
3748 SETUP_SYNTAX_TABLE_FOR_OBJECT (re_match_object, charpos, 1); 3748 SETUP_SYNTAX_TABLE_FOR_OBJECT (re_match_object, charpos, 1);
3749 } 3749 }
@@ -4063,8 +4063,9 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop)
4063 4063
4064#ifdef emacs 4064#ifdef emacs
4065 int charpos; 4065 int charpos;
4066 int adjpos = NILP (re_match_object) || BUFFERP (re_match_object);
4066 gl_state.object = re_match_object; 4067 gl_state.object = re_match_object;
4067 charpos = SYNTAX_TABLE_BYTE_TO_CHAR (POS_AS_IN_BUFFER (pos)); 4068 charpos = SYNTAX_TABLE_BYTE_TO_CHAR (pos + adjpos);
4068 SETUP_SYNTAX_TABLE_FOR_OBJECT (re_match_object, charpos, 1); 4069 SETUP_SYNTAX_TABLE_FOR_OBJECT (re_match_object, charpos, 1);
4069#endif 4070#endif
4070 4071
@@ -5358,7 +5359,7 @@ re_match_2_internal (bufp, string1, size1, string2, size2, pos, regs, stop)
5358 GET_CHAR_BEFORE_2 (c1, d, string1, end1, string2, end2); 5359 GET_CHAR_BEFORE_2 (c1, d, string1, end1, string2, end2);
5359 GET_CHAR_AFTER_2 (c2, d, string1, end1, string2, end2); 5360 GET_CHAR_AFTER_2 (c2, d, string1, end1, string2, end2);
5360#ifdef emacs 5361#ifdef emacs
5361 charpos = SYNTAX_TABLE_BYTE_TO_CHAR (pos1 ? pos1 : 1); 5362 charpos = SYNTAX_TABLE_BYTE_TO_CHAR (pos1);
5362 UPDATE_SYNTAX_TABLE (charpos); 5363 UPDATE_SYNTAX_TABLE (charpos);
5363#endif 5364#endif
5364 s1 = SYNTAX (c1); 5365 s1 = SYNTAX (c1);