チェンジセット 4203

差分発生行の前後
無視リスト:
コミット日時:
2010/08/14 20:40:47 (3 年前)
コミッタ:
hkrn
ログメッセージ:

added MarshalVersionError? class to prevent loading advanced version's log

ファイル:

凡例:

変更無し
追加
削除
更新
コピー
移動
  • as3/gunyarapaint/branches/gunyarapaint/compat/assets/langs.xml

    r4096 r4203  
    3030    </message> 
    3131    <message> 
     32      <msgid>Cannot load this file: actual version = %s, expected version = %s</msgid> 
     33      <msgstr>このファイルは読むことが出来ません: 実際のバージョン = %s, 期待されたバージョン = %s</msgstr> 
     34    </message> 
     35    <message> 
    3236      <msgid>Tried loading invalid signature log</msgid> 
    3337      <msgstr>不正な識別子を持つお絵描きログを読み込もうとしました</msgstr> 
  • as3/gunyarapaint/branches/gunyarapaint/compat/assets/locales/framework.po

    r3782 r4203  
    2222msgid "The current layer is locked" 
    2323msgstr "現在のレイヤーはロックされています" 
     24 
     25# MarshalVersionError.as 
     26msgid "Cannot load this file: actual version = %s, expected version = %s" 
     27msgstr "このファイルは読むことが出来ません: 実際のバージョン = %s, 期待されたバージョン = %s" 
    2428 
    2529# MergeLayersError.as 
  • as3/gunyarapaint/branches/gunyarapaint/framework/src/org/libspark/gunyarapaint/framework/Marshal.as

    r4118 r4203  
    1010    import org.libspark.gunyarapaint.framework.Recorder; 
    1111    import org.libspark.gunyarapaint.framework.UndoStack; 
     12    import org.libspark.gunyarapaint.framework.errors.MarshalVersionError; 
    1213    import org.libspark.gunyarapaint.framework.ui.IController; 
    1314     
     
    4546         * @param bytes お絵描きログ 
    4647         * @param toBytes 保存先となる ByteArray 
     48         * @throws MarshalVersionError 
    4749         */ 
    4850        public function load(bytes:ByteArray, toBytes:ByteArray):void 
     
    5254            bytes.inflate(); 
    5355            var version:uint = bytes.readUnsignedByte(); 
     56            if (version > VERSION) 
     57                throw new MarshalVersionError(version, VERSION); 
    5458            var dataBytes:ByteArray = ByteArray(bytes.readObject()); 
    5559            var rect:Object = bytes.readObject(); 
  • as3/gunyarapaint/branches/gunyarapaint/test/src/org/libspark/gunyarapaint/framework/MarshalTest.as

    r4118 r4203  
    1414    public class MarshalTest 
    1515    { 
    16         [Test
     16        [Test(description="保存したあと読み込んで値が復元されること")
    1717        public function shouldBeSymmetrical():void 
    1818        { 
     
    3838        } 
    3939         
     40        [Test(description = "指定されたバージョンよりも大きいバージョンを読み込むと例外を送出すること", 
     41              expects="org.libspark.gunyarapaint.framework.errors.MarshalVersionError")] 
     42        public function shouldThrowMarshalVersionError():void 
     43        { 
     44            var marshalData:Object = {}; 
     45            var marshal:Marshal = newMarshal(marshalData); 
     46            var bytes:ByteArray = new ByteArray(); 
     47            var toBytes:ByteArray = new ByteArray(); 
     48            bytes.writeByte(Marshal.VERSION + 1); 
     49            bytes.deflate(); 
     50            marshal.load(bytes, toBytes); 
     51        } 
     52         
    4053        private function newMarshal(data:Object):Marshal 
    4154        {