Bladeren bron

fixed duplicate sandboxes

Nicolas Cannasse 18 jaren geleden
bovenliggende
commit
d51d46dc71
2 gewijzigde bestanden met toevoegingen van 8 en 4 verwijderingen
  1. 1 0
      doc/CHANGES.txt
  2. 7 4
      genswf8.ml

+ 1 - 0
doc/CHANGES.txt

@@ -22,6 +22,7 @@
 	fixed some documentation related parser bug
 	fixed stack overflow with static setter
 	fixed package completion bug when -cp points to an not existing dir
+	fix duplicate sandboxes tags with -swf
 
 2007-07-25: 1.14
 	fixed no error when invalid "catch" expression

+ 7 - 4
genswf8.ml

@@ -1484,7 +1484,7 @@ let generate file ver header infile types hres =
 					h , Some tagbg
 			) in
 			IO.close_in ch;
-			let no_sandbox = ref true in
+			let has_sandbox = ref false in
 			let rec loop = function
 				| [] ->
 					failwith ("Frame 1 not found in " ^ file)
@@ -1513,14 +1513,17 @@ let generate file ver header infile types hres =
 						) el;
 						t :: loop l
 					end;
-				| ({ tdata = TSandbox s } as t) :: l when ver = 9 ->
-					no_sandbox := false;
+				| ({ tdata = TSandbox _ } as t) :: l when ver = 9 ->
+					has_sandbox := true;
 					{ t with tdata = TSandbox (SBUnknown 8) } :: loop l
+				| ({ tdata = TSandbox _ } as t) :: l ->				
+					has_sandbox := true;
+					t :: loop l
 				| t :: l ->
 					t :: loop l
 			in
 			let tags = loop swf in
-			let tags = (if !no_sandbox && ver >= 8 then sandbox() :: tags else tags) in
+			let tags = (if not !has_sandbox && ver >= 8 then sandbox() :: tags else tags) in
 			(header , tags)
 	) in
 	let swf = if ver = 8 && Plugin.defined "flash_v9" then ({ (fst swf) with h_version = 9 }, snd swf) else swf in