ruby-changes:2508
From: ko1@a...
Date: 23 Nov 2007 11:10:56 +0900
Subject: [ruby-changes:2508] matz - Ruby:r13999 (trunk): * re.c (match_begin): should return offset by character.
matz 2007-11-23 11:10:44 +0900 (Fri, 23 Nov 2007)
New Revision: 13999
Modified files:
trunk/ChangeLog
trunk/include/ruby/re.h
trunk/re.c
Log:
* re.c (match_begin): should return offset by character.
[ruby-dev:32331]
* re.c (match_end): ditto.
* re.c (rb_reg_search): ditto.
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=13999&r2=13998
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/include/ruby/re.h?r1=13999&r2=13998
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/re.c?r1=13999&r2=13998
Index: include/ruby/re.h
===================================================================
--- include/ruby/re.h (revision 13998)
+++ include/ruby/re.h (revision 13999)
@@ -37,9 +37,9 @@
#define RMATCH(obj) (R_CAST(RMatch)(obj))
VALUE rb_reg_regcomp(VALUE);
-long rb_reg_search(VALUE, VALUE, long, long);
+int rb_reg_search(VALUE, VALUE, int, int);
VALUE rb_reg_regsub(VALUE, VALUE, struct re_registers *, VALUE);
-long rb_reg_adjust_startpos(VALUE, VALUE, long, long);
+int rb_reg_adjust_startpos(VALUE, VALUE, int, int);
void rb_match_busy(VALUE);
VALUE rb_reg_quote(VALUE);
Index: re.c
===================================================================
--- re.c (revision 13998)
+++ re.c (revision 13999)
@@ -608,7 +608,16 @@
return INT2FIX(RMATCH(match)->regs->num_regs);
}
+static VALUE
+match_sublen(VALUE str, int offset)
+{
+ int i;
+ i = rb_str_sublen(str, offset);
+ return INT2FIX(i);
+}
+
+
/*
* call-seq:
* mtch.offset(n) => array
@@ -632,8 +641,8 @@
if (RMATCH(match)->regs->beg[i] < 0)
return rb_assoc_new(Qnil, Qnil);
- return rb_assoc_new(INT2FIX(RMATCH(match)->regs->beg[i]),
- INT2FIX(RMATCH(match)->regs->end[i]));
+ return rb_assoc_new(match_sublen(RMATCH(match)->str, RMATCH(match)->regs->beg[i]),
+ match_sublen(RMATCH(match)->str, RMATCH(match)->regs->end[i]));
}
@@ -660,7 +669,7 @@
if (RMATCH(match)->regs->beg[i] < 0)
return Qnil;
- return INT2FIX(RMATCH(match)->regs->beg[i]);
+ return match_sublen(RMATCH(match)->str, RMATCH(match)->regs->beg[i]);
}
@@ -687,7 +696,7 @@
if (RMATCH(match)->regs->beg[i] < 0)
return Qnil;
- return INT2FIX(RMATCH(match)->regs->end[i]);
+ return match_sublen(RMATCH(match)->str, RMATCH(match)->regs->end[i]);
}
#define MATCH_BUSY FL_USER2
@@ -739,10 +748,10 @@
}
}
-long
-rb_reg_adjust_startpos(VALUE re, VALUE str, long pos, long reverse)
+int
+rb_reg_adjust_startpos(VALUE re, VALUE str, int pos, int reverse)
{
- long range;
+ int range;
OnigEncoding enc;
UChar *p, *string;
@@ -773,13 +782,13 @@
return pos;
}
-long
-rb_reg_search(VALUE re, VALUE str, long pos, long reverse)
+int
+rb_reg_search(VALUE re, VALUE str, int pos, int reverse)
{
- long result;
+ int result;
VALUE match;
static struct re_registers regs;
- long range;
+ int range;
if (pos > RSTRING_LEN(str) || pos < 0) {
rb_backref_set(Qnil);
@@ -833,7 +842,8 @@
OBJ_INFECT(match, re);
OBJ_INFECT(match, str);
- return result;
+
+ return rb_str_sublen(RMATCH(match)->str, result);
}
VALUE
Index: ChangeLog
===================================================================
--- ChangeLog (revision 13998)
+++ ChangeLog (revision 13999)
@@ -1,3 +1,12 @@
+Fri Nov 23 11:01:54 2007 Yukihiro Matsumoto <matz@r...>
+
+ * re.c (match_begin): should return offset by character.
+ [ruby-dev:32331]
+
+ * re.c (match_end): ditto.
+
+ * re.c (rb_reg_search): ditto.
+
Fri Nov 23 10:44:24 2007 Yukihiro Matsumoto <matz@r...>
* compile.c (defined_expr): defined(method(x)) dumped core. a
--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml