diff --git a/src/codegen.inc.php b/src/codegen.inc.php index 0002dc3..0e53152 100644 --- a/src/codegen.inc.php +++ b/src/codegen.inc.php @@ -450,9 +450,11 @@ function var_sync($fname, \mtgType $type, $buf, array $tokens, $opts) { if($type->getValue() instanceof \mtgMetaEnum) { - $str .= "MetaIO.tmp_enums_list.Clear(); if(!{$buf}.is_read) { foreach(var _enum_tmp in {$fname}) MetaIO.tmp_enums_list.Add((int)_enum_tmp); }\n"; - $str .= "MetaIO.Sync({$buf}, MetaIO.tmp_enums_list, \"{$key_name}\", {$opts});\n"; - $str .= "if({$buf}.is_read) foreach(var _int_tmp in MetaIO.tmp_enums_list) { {$fname}.Add(({$type->getValue()->getName()}) _int_tmp); }\n"; + $str .= "{\n"; + $str .= "var tmp_enums_list = new List(); if(!{$buf}.is_read) { foreach(var _enum_tmp in {$fname}) tmp_enums_list.Add((int)_enum_tmp); }\n"; + $str .= "MetaIO.Sync({$buf}, tmp_enums_list, \"{$key_name}\", {$opts});\n"; + $str .= "if({$buf}.is_read) { {$fname}.Clear(); foreach(var _int_tmp in MetaIO.tmp_enums_list) {$fname}.Add(({$type->getValue()->getName()}) _int_tmp); }\n"; + $str .= "}\n"; } else $str .= "MetaIO.Sync({$buf}, {$fname}, \"{$key_name}\", {$opts});\n";