diff options
author | Melanie Thielker | 2009-02-18 22:32:25 +0000 |
---|---|---|
committer | Melanie Thielker | 2009-02-18 22:32:25 +0000 |
commit | 0086f9bd92a1af0b7998b81ee1f1742a16316894 (patch) | |
tree | 08cfd370dcd803a6ae265cb5f1da621ef6a7942c /OpenSim/Region/ScriptEngine/Shared/CodeTools | |
parent | Stops animations on Teleports, to conform with what the viewer does. (diff) | |
download | opensim-SC-0086f9bd92a1af0b7998b81ee1f1742a16316894.zip opensim-SC-0086f9bd92a1af0b7998b81ee1f1742a16316894.tar.gz opensim-SC-0086f9bd92a1af0b7998b81ee1f1742a16316894.tar.bz2 opensim-SC-0086f9bd92a1af0b7998b81ee1f1742a16316894.tar.xz |
Fix the windows sharing violations on script crossings
Diffstat (limited to 'OpenSim/Region/ScriptEngine/Shared/CodeTools')
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/CodeTools/Compiler.cs | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/CodeTools/Compiler.cs b/OpenSim/Region/ScriptEngine/Shared/CodeTools/Compiler.cs index 5d8f445..5b3dce7 100644 --- a/OpenSim/Region/ScriptEngine/Shared/CodeTools/Compiler.cs +++ b/OpenSim/Region/ScriptEngine/Shared/CodeTools/Compiler.cs | |||
@@ -343,7 +343,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.CodeTools | |||
343 | 343 | ||
344 | // Check this late so the map is generated on sim start | 344 | // Check this late so the map is generated on sim start |
345 | // | 345 | // |
346 | if (File.Exists(OutFile)) | 346 | if (File.Exists(OutFile) && File.Exists(OutFile+".text")) |
347 | { | 347 | { |
348 | // m_scriptEngine.Log.DebugFormat("[Compiler] Returning existing assembly for {0}", asset); | 348 | // m_scriptEngine.Log.DebugFormat("[Compiler] Returning existing assembly for {0}", asset); |
349 | return OutFile; | 349 | return OutFile; |
@@ -579,6 +579,48 @@ namespace OpenSim.Region.ScriptEngine.Shared.CodeTools | |||
579 | } | 579 | } |
580 | // m_scriptEngine.Log.DebugFormat("[Compiler] Compiled new assembly "+ | 580 | // m_scriptEngine.Log.DebugFormat("[Compiler] Compiled new assembly "+ |
581 | // "for {0}", asset); | 581 | // "for {0}", asset); |
582 | |||
583 | // Because windows likes to perform exclusive locks, we simply | ||
584 | // write out a textual representation of the file here | ||
585 | // | ||
586 | // Read the binary file into a buffer | ||
587 | // | ||
588 | FileInfo fi = new FileInfo(OutFile); | ||
589 | |||
590 | if (fi == null) | ||
591 | { | ||
592 | string errtext = String.Empty; | ||
593 | errtext += "No compile error. But not able to stat file."; | ||
594 | throw new Exception(errtext); | ||
595 | } | ||
596 | |||
597 | Byte[] data = new Byte[fi.Length]; | ||
598 | |||
599 | try | ||
600 | { | ||
601 | FileStream fs = File.Open(OutFile, FileMode.Open, FileAccess.Read); | ||
602 | fs.Read(data, 0, data.Length); | ||
603 | fs.Close(); | ||
604 | } | ||
605 | catch (Exception e) | ||
606 | { | ||
607 | string errtext = String.Empty; | ||
608 | errtext += "No compile error. But not able to open file."; | ||
609 | throw new Exception(errtext); | ||
610 | } | ||
611 | |||
612 | // Convert to base64 | ||
613 | // | ||
614 | string filetext = System.Convert.ToBase64String(data); | ||
615 | |||
616 | System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding(); | ||
617 | |||
618 | Byte[] buf = enc.GetBytes(filetext); | ||
619 | |||
620 | FileStream sfs = File.Create(OutFile+".text"); | ||
621 | sfs.Write(buf, 0, buf.Length); | ||
622 | sfs.Close(); | ||
623 | |||
582 | return OutFile; | 624 | return OutFile; |
583 | } | 625 | } |
584 | 626 | ||