[#7064] How to put version number of shared library? — Ryo HAYASAKA <hayasaka@...21.u-aizu.ac.jp>
早坂@会津大学です。
4 messages
1999/06/02
[#7082] [BUG] unpack('m') — 民斗 <tommy@...>
民斗です。
6 messages
1999/06/07
[#7091] [BUG?] load in thread — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
7 messages
1999/06/09
[#7092] Re: [BUG?] load in thread
— matz@... (Yukihiro Matsumoto)
1999/06/09
まつもと ゆきひろです
[#7102] Ruby 1.3.4-990611 — Yukihiro Matsumoto <matz@...>
Ruby 1.3.4-990611 is out, check out:
20 messages
1999/06/11
[#7108] Re: Ruby 1.3.4-990611
— Koji Arai <JCA02266@...>
1999/06/12
新井です。
[#7123] Re: Ruby 1.3.4-990611
— nagai@...
1999/06/16
永井@知能.九工大です.
[#7110] --enable-shared support — Katsuyuki Komatsu <komatsu@...>
小松です。
11 messages
1999/06/14
[#7111] Re: --enable-shared support
— WATANABE Tetsuya <tetsu@...>
1999/06/15
渡辺哲也です。
[#7173] [BUG] <<`HERE_DOC` — Koji Arai <JCA02266@...>
新井です。
7 messages
1999/06/22
[#7178] [PATCH] rubydb3x.el, ruby-mode.el — nobu.nakada@...
中田です。
7 messages
1999/06/22
[#7181] acknowledgement — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
6 messages
1999/06/23
[#7210] Ruby 1.3.4-990624 — Yukihiro Matsumoto <matz@...>
Ruby 1.3.4-990624 is out, check out:
7 messages
1999/06/24
[#7223] Ruby 1.3.4-990625 — Yukihiro Matsumoto <matz@...>
Ruby 1.3.4-990625 is out, check out:
14 messages
1999/06/25
[#7224] -Wl,-rpath on Linux (Re: Ruby 1.3.4-990625)
— Ryo HAYASAKA <hayasaka@...21.u-aizu.ac.jp>
1999/06/25
早坂@会津大学です。
[#7225] Re: -Wl,-rpath on Linux (Re: Ruby 1.3.4-990625)
— Katsuyuki Komatsu <komatsu@...>
1999/06/25
小松です。
[#7226] Re: -Wl,-rpath on Linux (Re: Ruby 1.3.4-990625)
— Katsuyuki Komatsu <komatsu@...>
1999/06/25
小松です。
[#7227] Re: -Wl,-rpath on Linux (Re: Ruby 1.3.4-990625)
— Katsuyuki Komatsu <komatsu@...>
1999/06/25
小松です。
[#7253] Re: Ruby 1.3.4-990625 — SHIROYAMA Takayuki <psi@...>
9 messages
1999/06/29
[#7258] TkVariable — Koji Arai <JCA02266@...>
新井です。
6 messages
1999/06/29
[ruby-dev:7246] Re: String#rindex with arbitrary starting point
From:
matz@... (Yukihiro Matsumoto)
Date:
1999-06-28 06:32:28 UTC
List:
ruby-dev #7246
まつもと ゆきひろです
In message "[ruby-dev:7233] Re: String#rindex with arbitrary starting point"
on 99/06/27, WATANABE Hirofumi <eban@os.rim.or.jp> writes:
|pos が位置なのか長さなのかというあたりがはっきりしてないのが
|バグの原因のようですね. pos は位置にしてみました.
|ついでに "" や // にも対応したつもり.
どーもです。やはり場当たり的な対応に限界が出ましたね。
ただ、そのまま反映するのではなく、ちょっと修正しました。
というのも、今の仕様はその範囲内に部分文字列が存在しないとい
けないという仕様なんですが、Perlに合わせて、その場所から検索
してマッチしてればOKに変更します。だから、
"abcdef".rindex("abc", 0)
は0を返すようになります。
|ただし Regexp のときは不完全.
これはregex.cで、BMサーチでは範囲内に部分文字列が存在するこ
とを仮定してたからです。これも修正しました。
|ところで index, rindex はマルチバイト対応しなくていいんだっけ?
正規表現を含まないマッチでは対応しないつもりです。対応するな
らjcode.rbを使ってでしょう。正規表現は対応するつもりですが、
逆方向マッチはちゃんと出来てる自信がないです。
まつもと ゆきひろ /:|)
--- string.c 1999/06/25 09:02:48 1.1.1.3.2.20
+++ string.c 1999/06/28 06:31:47
@@ -632,20 +632,30 @@
switch (TYPE(sub)) {
case T_REGEXP:
- pos = rb_reg_search(sub, str, pos, 1);
- if (pos >= 0) return INT2NUM(pos);
+ if (RREGEXP(sub)->len) {
+ pos = rb_reg_search(sub, str, pos, 1);
+ }
+ if (pos >= 0) return INT2NUM(pos);
break;
case T_STRING:
+ len = RSTRING(sub)->len;
/* substring longer than string */
- if (pos < RSTRING(sub)->len) return Qnil;
+ if (RSTRING(str)->len < len) return Qnil;
+ if (RSTRING(str)->len - pos < len) {
+ pos = RSTRING(str)->len - len;
+ }
sbeg = RSTRING(str)->ptr;
- s = RSTRING(str)->ptr + pos - RSTRING(sub)->len;
+ s = RSTRING(str)->ptr + pos;
t = RSTRING(sub)->ptr;
- len = RSTRING(sub)->len;
- while (sbeg <= s) {
- if (*s == *t && memcmp(s, t, len) == 0) {
- return INT2NUM(s - RSTRING(str)->ptr);
+ if (len) {
+ while (sbeg <= s) {
+ if (*s == *t && memcmp(s, t, len) == 0) {
+ return INT2NUM(s - RSTRING(str)->ptr);
+ }
+ s--;
}
- s--;
+ }
+ else {
+ return INT2NUM(pos);
}
break;
@@ -654,5 +664,5 @@
{
int c = FIX2INT(sub);
- char *p = RSTRING(str)->ptr + pos - 1;
+ char *p = RSTRING(str)->ptr + pos;
char *pbeg = RSTRING(str)->ptr;
--- regex.c 1999/06/25 09:02:46 1.1.1.3.2.26
+++ regex.c 1999/06/28 06:31:47
@@ -2963,5 +2963,5 @@
pos = pend; pend = pbeg; pbeg = pos;
}
- if (pend > size) pend = size;
+ pend = size;
if (bufp->options & RE_OPTIMIZE_NO_BM) {
pos = slow_search(bufp->must+1, len,