[#14614] 大小文字を無視した比較で ' 帰 ' == ' 蟻 ' ? — "K.Umakoshi" <pegacorn@...>
こんにちは。
まつもと ゆきひろです
From: matz@ruby-lang.org (Yukihiro Matsumoto)
なかだです。
まつもと ゆきひろです
[#14636] Re: [REQ] String#slice(re, n) — Minero Aoki <aamine@...>
あおきです。ruby-dev に移します。
[#14658] Socekt::SOL_TCP -> Socket::IPPROTO_TCP — m_seki@...
[#14662] How to abondon saved uid privilege — nobu.nakada@...
なかだです。
永井@知能.九工大です.
なかだです。
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
In message <20010905184635H.nagai@ai.kyutech.ac.jp>
ちょっと脱線します。 :)
In message <86ofopevkv.wl@archon.local.idaemons.org>
まつもと ゆきひろです
In message <999700675.662743.18683.nullmailer@ev.netlab.jp>
永井@知能.九工大です.
In message <20010906111828R.nagai@ai.kyutech.ac.jp>
永井@知能.九工大です.
In message <20010906132656Z.nagai@ai.kyutech.ac.jp>
永井@知能.九工大です.
In message <20010906174440D.nagai@ai.kyutech.ac.jp>
永井@知能.九工大です.
永井@知能.九工大です.
永井@知能.九工大です.
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
In article <20011102175733K.nagai@ai.kyutech.ac.jp>,
永井@知能.九工大です.
In article <20011103223903G.nagai@ai.kyutech.ac.jp>,
永井@知能.九工大です.
In article <20011109140713D.nagai@ai.kyutech.ac.jp>,
永井@知能.九工大です.
In article <20011109152213R.nagai@ai.kyutech.ac.jp>,
永井@知能.九工大です.
In article <20011109170952Z.nagai@ai.kyutech.ac.jp>,
[#14668] = in conditional — "Akinori MUSHA" <knu@...>
条件式で代入をすると
[#14716] CGI#header bug — Shugo Maeda <shugo@...>
前田です。
わたなべです。
[#14730] ruby-lex.rb: get value from TkSTRING and TkCOMMENT — TAKAHASHI Masayoshi <maki@...>
高橋征義です。
けいじゅ@日本ラショナルソフトウェアです.
高橋征義です。
けいじゅ@日本ラショナルソフトウェアです.
[#14743] [BUG] $_ on thread switching — nobu.nakada@...
なかだです。
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
なかだです。
なかだです。
なかだです。
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
[#14749] forwardable.rb : call Kernel.raise — Kenichi Komiya <kom@...1.accsnet.ne.jp>
けいじゅ@日本ラショナルソフトウェアです.
[#14754] regex.c について — Osamu Shigematsu <shige@...>
重松と申します。
[#14809] WAIT_SELECT value with multithread — nobu.nakada@...
なかだです。
まつもと ゆきひろです
なかだです。
[#14816] Generator — "Akinori MUSHA" <knu@...>
Python 2.2 では iterator と generator というのが導入されていて、
[#14823] ruby-1.6.5 MacOS X 10.1 patch — SHIROYAMA Takayuki - <psi@...>
SHIROYAMA Takayukiさんの<00f901c14652$c08a3470$600aa8c0@turtle>から
[ruby-dev:14754] regex.c について
重松と申します。
はじめまして。こちらでは初めての発言となります。
MacOS 9.2 で Metrowerks CodeWarrior Pro 6 を使って開発をしています。(自宅、
趣味です) 会社では VineLinux 2.1.5 (intel) を使っていますが、こちらでは PHP
を使って開発をしています。
以後、よろしくお願いいたします。
PHP は ruby の正規表現ルーチンを使っている、ということを聞き、REALbasic
(http://www.realsoftware.com) という Macintosh 用の BASIC 言語でも、正規表現
を使えるように plugin を作成したいと考え、本日、ruby-1.6.4 をダウンロードさ
せて頂きました。
ftp://ftp.ruby-lang.org/pub/ruby/ruby-1.6.4.tar.gz
早速で恐縮なのですが、regex.c を読んでいるのですが、
どうもバグではないかと思える箇所があります。
DOUBLE_STACK というマクロが定義されているのですが、この中で、
xmalloc (実体は malloc?) や、xrealloc を呼び出し、
その失敗を一切確認していません。
stackx = (type*)xmalloc(2 * xlen * sizeof(type));
memcpy(stackx, stackb, xlen * sizeof (type));
このままだと、xmalloc が失敗したときに、不正な転送操作をすると思われます。
また、realloc() の使い方自体を間違えていると思われる箇所がありました。
re_compile_pattern の中ですが、realloc は最初の引数、
古いポインタが null の場合には、malloc と等価ですから、
if(bufp->buffer) のように確認する意味はありませんし、
realloc は失敗すると null を返しますが、元々渡したポインタは、
何もされませんから (もちろん解放もされない)、そのままリークすると思います。
インデントは自分が読みやすいように変えてあります。
#if 0 /* OLDIES */
if(bufp->buffer){
/* EXTEND_BUFFER loses when bufp->allocated is 0. */
bufp->buffer = (char*)xrealloc(bufp->buffer, INIT_BUF_SIZE);
}else{
/* Caller did not allocate a buffer. Do it for them. */
bufp->buffer = (char*)xmalloc(INIT_BUF_SIZE);
}
if(!bufp->buffer) goto memory_exhausted;
#else /* { os : 2001/09/08 } BUGFIX */
{
char *new_buffer = (char*)xrealloc(bufp->buffer, INIT_BUF_SIZE);
if(!new_buffer) goto memory_exhausted;
bufp->buffer = new_buffer;
}
#endif
まだまだ C および ruby に対する理解が乏しいため、
どのように修正すればよいのかよく理解できていません。
この件について、何らかのアドバイスをいただければ幸いです。
--
Osamu Shigematsu
http://www.ravi.ne.jp/%7eshige/
mailto:shige@ravi.ne.jp