[#8468] require で SEGV — ruby <g96p0935@...>
西本です。
[#8469] [PATCH] -s command line option — nobu.nakada@...
なかだです。
[#8507] mode_t in file.c — Katsuyuki Komatsu <komatsu@...>
小松です。
[#8530] Enumerable and rand — Koretsugu Daigoro <tmmcross@...>
これつぐです。
まつもと ゆきひろです
これつぐです。
まつもと ゆきひろです
原です。
まつもと ゆきひろです
原です。
ごとけんです
これつぐです。
[#8565] interface declaretion — "Dai.K." <MAP2303@...>
[#8581] Re: [ruby-list:19228] Ruby 1.4.3 — Katsuyuki Komatsu <komatsu@...>
小松です。
まつもと ゆきひろです
えぐち@エスアンドイー です。
小松です。
まつもと ゆきひろです
小松です。
[#8622] Win32API (Re: Ruby 1.4.3 binaries for Cygwin and DJGPP) — WATANABE Hirofumi <Hirofumi.Watanabe@...>
わたなべです.
有馬@FITECです。
よしだです
[#8623] [BUG?] core dump `ruby -r debug' — IWAMURO Motonori <iwa@...>
岩室@富士通です。
[#8635] slow gsub — WATANABE Hirofumi <Hirofumi.Watanabe@...>
わたなべです.
[#8645] urllib and httplib — TAKAHASHI Masayoshi <maki@...>
高橋征義です。
なひです.
高橋征義です。
なひです.
まつもと ゆきひろです
なひです.
青山です。
なひです.
高橋征義です。
まつもと ゆきひろです
高橋征義です。
なひです.
西@九大です。
なかだです。
あおきです。
[#8650] [PATCH] Ruby/Tk — Koji Arai <JCA02266@...>
新井です。
新井です。
新井です。
新井です。
永井@知能.九工大です.
新井です。
永井@知能.九工大です.
新井です。
新井です。
[#8665] [mswin32] STDERR does not work during `_function. — "NAKAMURA, Hiroshi" <nakahiro@...>
なひです.
金子です。
金子です。
[#8667] make symlinks around libruby.so in instruby.rb — akira yamada / やまだあきら <akira@...>
[#8692] [win] dir name — KANEKO Naoshi <wbs01621@...>
金子です。
小田@QNES です。
えぐち@エスアンドイー です。
小田@QNES です。
えぐち@エスアンドイー です。
なかだです。
小田@QNES です。
えぐち@エスアンドイー です。
小田@QNES です。
[#8705] [mswin32] 100% CPU usage when use sleep — Katsuyuki Komatsu <komatsu@...>
小松です。
まつもと ゆきひろです
小松です。
[#8722] [mswin32] Win32API — KANEKO Naoshi <wbs01621@...>
金子です。
小松です。
まつもと ゆきひろです
[#8741] Re: [ruby-list:19945] Re: array + empty string — Wakou Aoyama <wakou@...>
青山です。
まつもと ゆきひろです
青山です。
まつもと ゆきひろです
ごとけんです
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
[#8742] [REQ] Array#each{|a,b,...|}, Array#shift/pop(num) — Kazunori NISHI <kazunori@...>
西@九大です。
まつもと ゆきひろです
西@九大です。
まつもと ゆきひろです
西@九大です。
まつもと ゆきひろです
えぐち@エスアンドイー です。
西@九大です。
あおきです。議論も好き。
西@九大です。
あおきです。
まつもと ゆきひろです
有馬です。
knuです。
まつもと ゆきひろです
これつぐです。
knuです。
まつもと ゆきひろです
あおきです。
まつもと ゆきひろです
In message "[ruby-dev:8792] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num)"
まつもと ゆきひろです
ごとけんです
ごとけんです
なかだです。
ごとけんです
[ruby-dev:8536] Re: String#rindex for multi-byte chars
まつもと ゆきひろです
In message "[ruby-dev:8529] Re: String#rindex for multi-byte chars"
on 99/12/05, YANAGAWA Kazuhisa <kjana@os.xaxon.ne.jp> writes:
|> 一応、仕様です。正しいマッチのためにはstartposが文字境界であ
|> ることを期待しているつもりです。マルチバイトならstartposをど
|> うこうってのは、やってないと思うんですが。
|
|まあ,これは regexp.c:re_search() をながめてたら ismbchar() でどうこ
|う,っていうのを見付けただけなので.でも現状でも一番最後の文字について
|はマルチバイト文字でもちゃんとマッチするように見えるので,ほかでもなん
|とかするつもりだったのではと邪推したのです :-)
あんまり考えてなかったです。
で、土曜の夜に風邪引いたあたまでつらつらと考えてみたのですが、
問題なのは、
|半端なマルチバイト文字の一部をどう扱う
|か,というのをちゃんとする必要はあるでしょうが.
という点です。/\244/みたいなパターンがマルチバイト文字の一部
にマッチできるっていう仕様がいかんのかもしれませんが。
つーわけで、パターンの先頭がマルチバイト文字の一部にマッチす
る可能性がある場合以外には、startposのオフセットを文字単位に
正規化するコードを書いてみました。
なんかうまく動いているようです。また様子を見てください。
diff -u -1 -r1.3 regex.h
--- regex.h 1999/08/24 08:21:54 1.3
+++ regex.h 1999/12/06 02:18:36
@@ -79,2 +79,3 @@
#define RE_OPTIMIZE_NO_BM (RE_OPTIMIZE_EXACTN<<1)
+#define RE_OPTIMIZE_BMATCH (RE_OPTIMIZE_NO_BM<<1)
--- regex.c 1999/11/11 04:08:26 1.9
+++ regex.c 1999/12/06 02:18:45
@@ -2628,2 +2629,3 @@
fastmap[p[2]] = 2;
+ bufp->options |= RE_OPTIMIZE_BMATCH;
}
@@ -2830,4 +2832,6 @@
single-byte chars. We must reject them. */
- if (c < 0x100)
+ if (c < 0x100) {
fastmap[beg] = 2;
+ bufp->options |= RE_OPTIMIZE_BMATCH;
+ }
else if (ismbchar(beg))
@@ -2950,2 +2954,29 @@
re_compile_fastmap(bufp);
+ }
+
+ /* Adjust startpos for mbc string */
+ if (current_mbctype && startpos>0 && !(bufp->options&RE_OPTIMIZE_BMATCH)) {
+ int i = 0;
+
+ if (range > 0) {
+ while (i<size) {
+ i += mbclen(string[i]);
+ if (startpos <= i) {
+ startpos = i;
+ break;
+ }
+ }
+ }
+ else {
+ int w;
+
+ while (i<size) {
+ w = mbclen(string[i]);
+ if (startpos < i + w) {
+ startpos = i;
+ break;
+ }
+ i += w;
+ }
+ }
}