compiler/libec: Fixed crash on matching method parameters
authorJerome St-Louis <jerome@ecere.com>
Mon, 29 Jul 2013 09:01:49 +0000 (05:01 -0400)
committerJerome St-Louis <jerome@ecere.com>
Mon, 29 Jul 2013 09:01:49 +0000 (05:01 -0400)
- The IDE crashed in a scenario on completing OnGetString(

compiler/libec/src/pass1.ec

index 188b84d..05c1ee1 100644 (file)
@@ -147,11 +147,11 @@ External ProcessClassFunction(Class owningClass, ClassFunction func, OldList def
                // Mark typed_object/any_object parameters as such according to method type
                Type typeParam;
                Declarator funcDecl = GetFuncDecl(func.declarator);
-               if(funcDecl.function.parameters)
+               if(funcDecl.function.parameters && funcDecl.function.parameters->first)
                {
                   TypeName param = funcDecl.function.parameters->first;
 
-                  for(typeParam = methodDataType.params.first; typeParam; typeParam = typeParam.next)
+                  for(typeParam = methodDataType.params.first; typeParam && param; typeParam = typeParam.next)
                   {
                      if(typeParam.classObjectType)
                      {
@@ -159,7 +159,7 @@ External ProcessClassFunction(Class owningClass, ClassFunction func, OldList def
                         if(param.declarator && param.declarator.symbol)
                            param.declarator.symbol.type.classObjectType = typeParam.classObjectType;
                      }
-                     param = param.next;
+                     param = param ? param.next : null;
                   }
                }
             }