トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

BugTrack-wiki/174

ページの作成や編集にはユーザ登録が必要です。

exitの上書き

  • 投稿者: まかまか
  • カテゴリ: 本体
  • 優先度: 低
  • 状態: リリース済
  • 日時: 2004年03月27日 16時10分09秒

 内容

3.5系のwiki.cgiのBEGINブロック内

use subs 'exit';
require Apache;
*exit = \&Apache::exit;

上記の処理ですが、use subs はカレントパッケージのサブルーチンを宣言するので、wiki.cgi内のexitが書き換わります。ですが実際にはwiki.cgi内でexitは使われていません。加えて、useしているのでmod_perlの有無に関係なくexitが宣言されます。wiki.cgi内にexitを加えて通常のCGIとして利用するとUndefined subroutine &main::exit calledと警告されます。

これは他のモジュールやプラグインが呼び出すexitの書き換えを意図しているのでしょうか。もしそうでしたら

# use subs 'exit' --- 削除
require Apache;
*CORE::GLOBAL::exit = \&Apache::exit;

という書き方の方がよいと思うのですが、如何でしょうか。(もっとも、今のApache::RegistryやApache::PerlRunは自動的に*CORE::GLOBAL::exitを上書きするそうで)

 コメント

  • ご指摘ありがとうございます。手元のmod_perl環境で確認して、消してしまっても問題ないようであれば消してしまいます。 - たけぞう (2004年03月27日 22時46分55秒)
  • 3.5.3でリリースしました。 - たけぞう (2004年04月10日 17時28分46秒)
お名前: コメント:

最終更新時間:2014年01月28日 15時40分35秒