This is an automated email from the ASF dual-hosted git repository.

aharui pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git

commit 3b152192dcd83172f696d31d75c595b05bb0682f
Author: Alex Harui <[email protected]>
AuthorDate: Mon Jul 23 10:43:43 2018 -0700

    fix the thread-safety
---
 .../compiler/internal/definitions/ClassDefinitionBase.java     | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git 
a/compiler/src/main/java/org/apache/royale/compiler/internal/definitions/ClassDefinitionBase.java
 
b/compiler/src/main/java/org/apache/royale/compiler/internal/definitions/ClassDefinitionBase.java
index e61a283..fd595e7 100644
--- 
a/compiler/src/main/java/org/apache/royale/compiler/internal/definitions/ClassDefinitionBase.java
+++ 
b/compiler/src/main/java/org/apache/royale/compiler/internal/definitions/ClassDefinitionBase.java
@@ -435,7 +435,7 @@ public abstract class ClassDefinitionBase extends 
TypeDefinitionBase implements
                        {
                                if (baseDefinitions == null)
                                {
-                                       baseDefinitions = new 
ArrayList<IDefinition>();
+                                       ArrayList<IDefinition> bases = new 
ArrayList<IDefinition>();
                                        
                                    // We're trying to determine whether this 
class
                                    // is derived from a specified class 
('type').
@@ -444,8 +444,9 @@ public abstract class ClassDefinitionBase extends 
TypeDefinitionBase implements
                                    while (iter.hasNext())
                                    {
                                        IClassDefinition cls = iter.next();
-                                       baseDefinitions.add(cls);
+                                       bases.add(cls);
                                    }
+                                   baseDefinitions = bases;
                                }
                        }
                if ((CompilerDiagnosticsConstants.diagnostics & 
CompilerDiagnosticsConstants.CLASS_DEFINITION_BASE) == 
CompilerDiagnosticsConstants.CLASS_DEFINITION_BASE)
@@ -463,7 +464,7 @@ public abstract class ClassDefinitionBase extends 
TypeDefinitionBase implements
                        {
                        if (implDefinitions == null)
                        {
-                                       implDefinitions = new 
ArrayList<IDefinition>();
+                                       ArrayList<IDefinition> impls = new 
ArrayList<IDefinition>();
                                        
                                    // We're trying to determine whether this 
class
                                    // implements a specified interface 
('type').
@@ -473,8 +474,9 @@ public abstract class ClassDefinitionBase extends 
TypeDefinitionBase implements
                                    while (iter.hasNext())
                                    {
                                        IInterfaceDefinition intf = iter.next();
-                                       implDefinitions.add(intf);
+                                       impls.add(intf);
                                    }
+                                   implDefinitions = impls;
                        }
                        }
                if ((CompilerDiagnosticsConstants.diagnostics & 
CompilerDiagnosticsConstants.CLASS_DEFINITION_BASE) == 
CompilerDiagnosticsConstants.CLASS_DEFINITION_BASE)

Reply via email to