前田です。

In message "[ruby-list:9779] Re: ruby-jed SEGV"
Yukihiro Matsumoto <matz / netlab.co.jp> wrote:

|||Jed/Rubyのソースを見るとトップレベルの環境を積まずにRubyのコー
|||ドを呼んでますから,例外が起きると落ちますね.
||
||これはruby_init()以外にしなければならない処理があるということ
||でしょうか。
|
|いやあ,この辺がRuby側で対応すべき内容なんですが.
|
|というのも,トップレベルの環境が積んでない状態で例外が発生す
|ると落ちるという現象があるんです.これは簡単な修正で対応でき
|ますが,それでもプログラムが落ちてしまうのでJed/Rubyにとって
|望ましい動作ではないでしょう.
|
|んで,環境を積むには
|
|  * rb_eval_string(), rb_load()などを使う
|  * rb_rescue()でくくる

なるほど、直接rb_internを呼んで例外が発生するとまずいわけですね。

|ないです.判断基準としては
|
|  * 先頭が記号([^a-zA-Z_$@])ではじまり,Rubyの演算子でない
|
|文字列をrb_intern()に渡すと例外が発生します.
|
|なんか良いアイディアがありますかね.

不正な文字列が渡された時に例外を出さずに、例えば0を返すrb_internが
あるとよいような気がします。
# rb_intern2というのはダメですか。

-- 
前田 修吾 <shugo / aianet.ne.jp>