compiler/libec: (#94) Fixed DOs fussiness over module names and project order doTweaks
authorJerome St-Louis <jerome@ecere.com>
Tue, 21 Jun 2016 06:04:01 +0000 (02:04 -0400)
committerJerome St-Louis <jerome@ecere.com>
Tue, 21 Jun 2016 06:04:01 +0000 (02:04 -0400)
compiler/libec/src/loadSymbols.ec

index c75b756..f68f4f7 100644 (file)
@@ -724,6 +724,16 @@ public void ImportModule(const char * name, ImportType importType, AccessMode im
 {
    ImportedModule module = null;
    char moduleName[MAX_LOCATION];
+   bool isSourceModule = false;
+   if(sourceFile)
+   {
+      char sourceFileModule[MAX_FILENAME];
+      strncpy(sourceFileModule, sourceFile, MAX_LOCATION-1);
+      sourceFileModule[MAX_LOCATION-1] = 0;
+      StripExtension(sourceFileModule);
+      if(!strcmpi(sourceFileModule, name))
+         isSourceModule = true;
+   }
 
    strncpy(moduleName, name, MAX_LOCATION-1);
    moduleName[MAX_LOCATION-1] = 0;
@@ -731,7 +741,8 @@ public void ImportModule(const char * name, ImportType importType, AccessMode im
 
    for(module = defines->first; module; module = module.next)
    {
-      if(module.type == moduleDefinition && !strcmpi(module.name, moduleName))
+      if(module.type == moduleDefinition && !strcmpi(module.name, moduleName) &&
+         ((importType == remoteImport) == (module.importType == remoteImport) || isSourceModule))
          break;
    }
    if((!module || (module.dllOnly && !loadDllOnly)) && strlen(name) < MAX_FILENAME)