diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-03-01 21:54:59 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-03-01 21:54:59 +0000 |
commit | db37773e13fba8ccb28612361220638e702d4deb (patch) | |
tree | 72ffe3fbbb7762810ec3780c3004408ee5d0d693 /regexec.c | |
parent | e1c33162cf821b5251559564242e0d91ad29a79c (diff) |
* include/ruby/oniguruma.h: updated to follow Oniguruma 5.9.2.
* re.c (make_regexp): use onig_new() instead of onig_alloc_init().
* re.c (rb_reg_to_s): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26791 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'regexec.c')
-rw-r--r-- | regexec.c | 24 |
1 files changed, 11 insertions, 13 deletions
@@ -2,7 +2,7 @@ regexec.c - Oniguruma (regular expression library) **********************************************************************/ /*- - * Copyright (c) 2002-2007 K.Kosako <sndgk393 AT ybb DOT ne DOT jp> + * Copyright (c) 2002-2008 K.Kosako <sndgk393 AT ybb DOT ne DOT jp> * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -2914,11 +2914,10 @@ bm_search_notrev(regex_t* reg, const UChar* target, const UChar* target_end, while (s < end) { p = se = s + tlen1; t = tail; - while (t >= target && *p == *t) { - p--; t--; + while (*p == *t) { + if (t == target) return (UChar* )s; + p--; t--; } - if (t < target) return (UChar* )s; - skip = reg->map[*se]; t = s; do { @@ -2930,11 +2929,10 @@ bm_search_notrev(regex_t* reg, const UChar* target, const UChar* target_end, while (s < end) { p = se = s + tlen1; t = tail; - while (t >= target && *p == *t) { - p--; t--; + while (*p == *t) { + if (t == target) return (UChar* )s; + p--; t--; } - if (t < target) return (UChar* )s; - skip = reg->int_map[*se]; t = s; do { @@ -2963,10 +2961,10 @@ bm_search(regex_t* reg, const UChar* target, const UChar* target_end, while (s < end) { p = s; t = tail; - while (t >= target && *p == *t) { + while (*p == *t) { + if (t == target) return (UChar* )p; p--; t--; } - if (t < target) return (UChar* )(p + 1); s += reg->map[*s]; } } @@ -2974,10 +2972,10 @@ bm_search(regex_t* reg, const UChar* target, const UChar* target_end, while (s < end) { p = s; t = tail; - while (t >= target && *p == *t) { + while (*p == *t) { + if (t == target) return (UChar* )p; p--; t--; } - if (t < target) return (UChar* )(p + 1); s += reg->int_map[*s]; } } |