Fandom

Second Life in Japan

スクリプターズカフェ/ログ/llGetSubStringのVoodooサンプル

483このwikiの
ページ数
新しいページをつくる
トーク0 シェアする

Scripters_cafeログ


08/04/26 編集

LSLでの演算の優先順位でテストしていた内容が実際に有効なのかどうかのサンプルを作ってみました。

string test = "012345679012345679012345679012345679・・・ 012345679";
// 実際は1000文字程度の長さ。ページの都合上省略しています。

default {
    state_entry() {
//        test = llGetSubString( test, 0, 5000 );  // (1)
        test = llGetSubString( ( test = "" ) + test, 0, 5000 );  // (2)
        llOwnerSay( test );
    }
}


このスクリプトを(test変数の定義部分は、実際に1000文字程度になるように書き換えてください)そのまま実行するとllOwnerSayまで実行されますが、(1)の行のコメントアウトを解除して、(2)の行をコメントアウトすると、(1)の行の実行時点でstack-heap collisionが発生します。

巨大な文字列に対して上記のような置き換え処理を行うような状況が実際に必要になる場面は滅多になさそうですが、「こういう仕様で動いている」という理解の助けにはなると思います。

広告ブロッカーが検出されました。


広告収入で運営されている無料サイトWikiaでは、このたび広告ブロッカーをご利用の方向けの変更が加わりました。

広告ブロッカーが改変されている場合、Wikiaにアクセスしていただくことができなくなっています。カスタム広告ブロッカーを解除してご利用ください。

Fandomでも見てみる

おまかせWiki