aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine/Shared/CodeTools/LSL2CSCodeTransformer.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/ScriptEngine/Shared/CodeTools/LSL2CSCodeTransformer.cs')
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/CodeTools/LSL2CSCodeTransformer.cs18
1 files changed, 15 insertions, 3 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/CodeTools/LSL2CSCodeTransformer.cs b/OpenSim/Region/ScriptEngine/Shared/CodeTools/LSL2CSCodeTransformer.cs
index 0dddede..cacb8be 100644
--- a/OpenSim/Region/ScriptEngine/Shared/CodeTools/LSL2CSCodeTransformer.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/CodeTools/LSL2CSCodeTransformer.cs
@@ -92,10 +92,22 @@ namespace OpenSim.Region.ScriptEngine.Shared.CodeTools
92 92
93 for (int i = 0; i < s.kids.Count; i++) 93 for (int i = 0; i < s.kids.Count; i++)
94 { 94 {
95 if (!(s is Assignment || s is ArgumentDeclarationList) && s.kids[i] is Declaration) 95 // It's possible that a child is null, for instance when the
96 AddImplicitInitialization(s, i); 96 // assignment part in a for-loop is left out, ie:
97 //
98 // for ( ; i < 10; i++)
99 // {
100 // ...
101 // }
102 //
103 // We need to check for that here.
104 if (null != s.kids[i])
105 {
106 if (!(s is Assignment || s is ArgumentDeclarationList) && s.kids[i] is Declaration)
107 AddImplicitInitialization(s, i);
97 108
98 TransformNode((SYMBOL) s.kids[i]); 109 TransformNode((SYMBOL) s.kids[i]);
110 }
99 } 111 }
100 } 112 }
101 113