« ソースコードのUTF-8化とVisual Studio 2015への移行 | メイン | 8末までマルチプラットフォームクラウドファンディングを受けて »

2016年09月02日

吉里吉里Z 開発:: Dictionary.loadStructでテキスト形式でも読めるように対応

    

吉里吉里2/Zに脆弱性があると言う話 でバイナリ形式は対応していたが、テキストはまだだった。
何度もニュースを目にして煩わしいので、テキストも対応することに。
(const) 付きの Dictionary/Array はそれぞれを生成するバイトコードが出力されるのではなく、読み込み時に各オブジェクトが生成されてデータ領域に置かれ、バイトコード自体はデータ領域からレジスタにコピーして、そのレジスタを return すると言う3つの命令が生成される形になるため、loadStruct から呼び出された時は、スクリプト(top level)の実行は行わず、データ領域から直接 result へコピーしてしまうようにした。
これでテキストのセーブデータを var savedata = Dictionary.loadStruct("data.dat"); のようにして読み込めばスクリプトが実行されることなく読み込める。
まあ、前回のバイナリと同じ。

ただ、バイナリのように全て対応はしておらず、上記 Dictionary.loadStruct とした呼び出しのみ対応。
インスタンスを指定してそこに読み込ませたり、Array で読み込ませたり、Dictionary で Array のデータ読んで例外などはまだ対応していない。
完全対応ではないが、実際に使う分には何ら問題ないはず。
これでテキストでもバイナリでもセーブデータをデータとして読み込めるようになった。


投稿者 Takenori : 2016年09月02日 20:54




comments powered by Disqus
Total : Today : Yesterday : なかのひと