ソラマメ ブログ
オーナーへメッセージ
読者登録
メールアドレスを入力して登録する事で、このブログの新着エントリーをメールでお届けいたします。 解除は→こちら
現在の読者数 1人
アクセスカウンタ
QRコード
QRCODE

2008年05月10日

スタックオーバー?

ひさしぶりにスクリプトでも書いていたらこんなエラーが出ました。

LSL
Parser stack depth exceeded; SL will throw a syntax error here.

これは?

とりあえず調べてみると、スタックが150を超えると駄目みたいです。

んんっ?
いくらなんでもそんなにネストしている場所は無いのですが??

スタックの数え方がよくわからないのですが、(英語だったので適当にしか読んでいないだけなのですが
処理がネストする以外に変数や関数を定義するだけで1つ消費するみたいです。
制限されている理由も書いてあった気がします。

私のソースは定義値用に無駄な変数作りまくっているのが原因でしょうね。
回避方法を参考に
関数を先に定義してから変数を定義するように変えてみました。

それだけで無事エラーが出なくなりました。

グローバル変数を使用している関数が、
変数定義より前に定義されているのが気持ち悪いのですが、
エラーは出ないのでひとまず良しとしておきましょう。

どうやらこのエラー lslint.exe を使用している場合だけに起きるようです。
InWorldでは問題なくコンパイルが通りました。

何はともあれ解決しました。


それにしても定数どうしましょうね。
無駄に思えて仕方がないのですが、即値はもっと嫌です。
しかも複数のソースで同じ物を使用する場合、両方に同じものを書かないといけないですし。

まあ、あまりにも増えすぎたら奥の手使うしかないですね。

この記事へのトラックバックURL