diff options
| -rw-r--r-- | src/search.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/search.c b/src/search.c index f96e9e53bd9..d321ec1901e 100644 --- a/src/search.c +++ b/src/search.c | |||
| @@ -848,10 +848,11 @@ skip_chars (forwardp, syntaxp, string, lim) | |||
| 848 | { | 848 | { |
| 849 | while (pos > XINT (lim)) | 849 | while (pos > XINT (lim)) |
| 850 | { | 850 | { |
| 851 | int savepos = pos; | ||
| 851 | DEC_POS (pos); | 852 | DEC_POS (pos); |
| 852 | if (!fastmap[(int) SYNTAX (FETCH_CHAR (pos))]) | 853 | if (!fastmap[(int) SYNTAX (FETCH_CHAR (pos))]) |
| 853 | { | 854 | { |
| 854 | INC_POS (pos); | 855 | pos = savepos; |
| 855 | break; | 856 | break; |
| 856 | } | 857 | } |
| 857 | } | 858 | } |
| @@ -889,6 +890,7 @@ skip_chars (forwardp, syntaxp, string, lim) | |||
| 889 | { | 890 | { |
| 890 | while (pos > XINT (lim)) | 891 | while (pos > XINT (lim)) |
| 891 | { | 892 | { |
| 893 | int savepos = pos; | ||
| 892 | DEC_POS (pos); | 894 | DEC_POS (pos); |
| 893 | if (fastmap[(c = FETCH_BYTE (pos))]) | 895 | if (fastmap[(c = FETCH_BYTE (pos))]) |
| 894 | { | 896 | { |
| @@ -903,14 +905,23 @@ skip_chars (forwardp, syntaxp, string, lim) | |||
| 903 | if (ch >= char_ranges[i] && ch <= char_ranges[i + 1]) | 905 | if (ch >= char_ranges[i] && ch <= char_ranges[i + 1]) |
| 904 | break; | 906 | break; |
| 905 | if (!(negate ^ (i < n_char_ranges))) | 907 | if (!(negate ^ (i < n_char_ranges))) |
| 906 | break; | 908 | { |
| 909 | pos = savepos; | ||
| 910 | break; | ||
| 911 | } | ||
| 907 | } | 912 | } |
| 908 | else | 913 | else |
| 909 | if (!negate) | 914 | if (!negate) |
| 910 | break; | 915 | { |
| 916 | pos = savepos; | ||
| 917 | break; | ||
| 918 | } | ||
| 911 | } | 919 | } |
| 912 | else | 920 | else |
| 913 | break; | 921 | { |
| 922 | pos = savepos; | ||
| 923 | break; | ||
| 924 | } | ||
| 914 | } | 925 | } |
| 915 | } | 926 | } |
| 916 | } | 927 | } |