[#14922] alias $gvar — Koji Arai <JCA02266@...>

新井です。

19 messages 2001/10/14

[#15006] Re: eval.c (rb_stack_check): prohibit recursive raising error — WATANABE Hirofumi <eban@...>

わたなべです。

13 messages 2001/10/26
[#15008] Re: eval.c (rb_stack_check): prohibit recursive raising error — Shugo Maeda <shugo@...> 2001/10/26

前田です。

[ruby-dev:14884] Re: ruby-1.6.5 MacOS X 10.1 patch

From: SHIROYAMA Takayuki - <psi@...>
Date: 2001-10-04 07:55:37 UTC
List: ruby-dev #14884

しろやまです。

> しかし、ext/cursesのMakefileがおかしいのでは?
> ということは変わりません。
>

すみません、いま rubyのソースを広げてない(広げたマシンを
ちょいいぢめている最中なので...(^^;))のでわかりませんが、
スタティックなライブラリが参照されないため、librubyの中の
シンボルが未解決となり、two level namespace の要求する、
全てのシンボルが解決させる事という条件が満たされない
のでエラーとなるということですね。

なぜ LIBRUBY_Aが定義されないのかは私もわかりませんが、
ただ、libruby.aを参照すると、拡張モジュールの側にもlibruby.a
に含まれるオブジェクトがリンクされてしまい、実行時に二重に
オブジェクトが存在して、まづい事になるんじゃないかなぁと
思ってしまいます。


> Mac OS Xの場合、Ruby本体でenvironを直接参照しないようにするしか
> 解決できないのでしょうか。
>

話が最初に戻ってしまいますが、 flat_namespaceを使えば
解決します。

Rubyの場合、Rubyそのもので拡張ライブラリと librubyの名前
の衝突が起こらないように注意されているので、two_level_namespace
を採用しないとまずいという問題はそうないのではないかと楽
観視してますが...
# 昔々、NeXTSTEPの thread_createという関数がぶつかって、
# まつもとさんにrubyの全てのシンボルに rb_をつけてもらうと
# いうとんでもない手間をかけさせた奴がいまして... (汗)


> hash.cの中で、environを使用せず、getenv(), setenv()等だけでは
> 済まない理由は何でしょうか?
>

こっちはわかりません。全てを getenv/setenvベースで書き直
してしまえば、確かに __envrionを参照することはありませんね。

あと、私の記憶が正しければ、hash.c以外にも eval.cでも使わ
れてます >_environ

---
SHIROYAMA Takayuki


In This Thread

Prev Next