diff options
| author | Richard M. Stallman | 1998-06-06 21:59:21 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 1998-06-06 21:59:21 +0000 |
| commit | 7e95234e31ef8a0e7b36859adf00c44311c219a4 (patch) | |
| tree | 252e2df33ff245913622def4a502f7c1c2cb6991 /src | |
| parent | 707ee44899588036112f16d5c86deaf6fc534bce (diff) | |
| download | emacs-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.c | 11 |
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); |