summaryrefslogtreecommitdiff
path: root/regex.c
diff options
context:
space:
mode:
authorYukihiro Matsumoto <matz@ruby-lang.org>1997-11-18 13:59:59 +0900
committerTakashi Kokubun <takashikkbn@gmail.com>2019-08-17 22:09:33 +0900
commitcfd31fa21b67c4992a0360d7c605de1c6add874e (patch)
treed34f234a51909b313ba3f1e7e4829caa65f1fca6 /regex.c
parent9b01ce69546380c57cb602e045be4fc012cd81b7 (diff)
version 1.0-971118v1_0_971118
https://cache.ruby-lang.org/pub/ruby/1.0/ruby-1.0-971118.tar.gz Tue Nov 18 13:59:59 1997 Yukihiro Matsumoto <matz@netlab.co.jp> * version 1.0-971118 Tue Nov 18 10:13:08 1997 Yukihiro Matsumoto <matz@netlab.co.jp> * regex.c (re_compile_pattern): insert initialize code for jump_n, before entering loops. Sat Nov 15 00:11:36 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp> * io.c (io_s_popen): "rb" detection Wed Nov 12 13:44:47 1997 Yukihiro Matsumoto <matz@netlab.co.jp> * time.c: remove coerce from Time class. Wed Nov 2 16:00:00 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp> * string.c (str_sub_s): "".sub! "", "" => "\000" Thu Oct 30 16:54:01 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp> * string.c (str_chop_bang): "".chop caused SEGV. * string.c (str_chomp_bang): method to chop out last newline. Mon Oct 27 13:49:13 1997 Yukihiro Matsumoto <matz@netlab.co.jp> * ext/extmk.rb.in: library may have pathname contains `.' * eval.c (rb_rescue): should not protect SystemError. Thu Oct 23 11:17:44 1997 Yukihiro Matsumoto <matz@netlab.co.jp> * range.c (range_eqq): fixnum check for last needed too. Wed Oct 22 12:52:30 1997 Yukihiro Matsumoto <matz@netlab.co.jp> * array.c (ary_join): call ary_join() recursively for the 1st array element. Co-authored-by: WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>
Diffstat (limited to 'regex.c')
-rw-r--r--regex.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/regex.c b/regex.c
index da7f2c6e8a..686695cbe2 100644
--- a/regex.c
+++ b/regex.c
@@ -1203,6 +1203,11 @@ re_compile_pattern(pattern, size, bufp)
b, lower_bound);
b += 5; /* Just increment for the succeed_n here. */
+ /* When hit this when matching, set the succeed_n's n. */
+ GET_BUFFER_SPACE(5);
+ insert_op_2(set_number_at, laststart, b, 5, lower_bound);
+ b += 5;
+
/* More than one repetition is allowed, so put in at
the end of the buffer a backward jump from b to the
succeed_n we put in above. By the time we've gotten
@@ -1211,19 +1216,18 @@ re_compile_pattern(pattern, size, bufp)
if (upper_bound > 1)
{
- store_jump_n(b, jump_n, laststart, upper_bound - 1);
+ GET_BUFFER_SPACE(15);
+ store_jump_n(b, jump_n, laststart+5, upper_bound - 1);
b += 5;
/* When hit this when matching, reset the
preceding jump_n's n to upper_bound - 1. */
+ insert_op_2(set_number_at, laststart, b, b - laststart, upper_bound - 1);
+ b += 5;
+
BUFPUSH(set_number_at);
- GET_BUFFER_SPACE(2);
STORE_NUMBER_AND_INCR(b, -5);
STORE_NUMBER_AND_INCR(b, upper_bound - 1);
}
- /* When hit this when matching, set the succeed_n's n. */
- GET_BUFFER_SPACE(5);
- insert_op_2(set_number_at, laststart, b, 5, lower_bound);
- b += 5;
}
pending_exact = 0;
beg_interval = 0;
@@ -2006,7 +2010,7 @@ struct register_info
if (regstart[last_used_reg] != (unsigned char *)(-1L)) \
break; \
\
- if (stacke - stackp < NUM_FAILURE_ITEMS) \
+ if (stacke - stackp <= NUM_FAILURE_ITEMS) \
{ \
unsigned char **stackx; \
unsigned int len = stacke - stackb; \