diff --git a/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/TranslationManager.kt b/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/TranslationManager.kt index 49080ca4a54..74b727b5468 100644 --- a/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/TranslationManager.kt +++ b/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/TranslationManager.kt @@ -350,7 +350,7 @@ private constructor( } return null } - component.translationUnits.add(frontend.parse(sourceLocation)) + component.addTranslationUnit(frontend.parse(sourceLocation)) } catch (ex: TranslationException) { log.error("An error occurred during parsing of ${sourceLocation.name}: ${ex.message}") if (config.failOnError) { diff --git a/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/TranslationResult.kt b/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/TranslationResult.kt index 6df9a10a846..fcb04609e59 100644 --- a/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/TranslationResult.kt +++ b/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/TranslationResult.kt @@ -132,7 +132,7 @@ class TranslationResult( components.add(swc) } } - tu?.let { swc.translationUnits.add(it) } + tu?.let { swc.addTranslationUnit(it) } } /** diff --git a/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/graph/Component.kt b/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/graph/Component.kt index 9eb6d7ad046..3a8e368bd92 100644 --- a/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/graph/Component.kt +++ b/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/graph/Component.kt @@ -38,6 +38,11 @@ open class Component : Node() { /** All translation units belonging to this application. */ @AST val translationUnits: MutableList = mutableListOf() + @Synchronized + fun addTranslationUnit(tu: TranslationUnitDeclaration) { + translationUnits.add(tu) + } + /** * All points where unknown data may enter this application, e.g., the main method, or other * targets such as listeners to external events such as HTTP requests. This also includes the diff --git a/cpg-language-cxx/src/test/kotlin/de/fraunhofer/aisec/cpg/frontends/cxx/CXXCompilationDatabaseTest.kt b/cpg-language-cxx/src/test/kotlin/de/fraunhofer/aisec/cpg/frontends/cxx/CXXCompilationDatabaseTest.kt index 9017245de91..aa9439518ba 100644 --- a/cpg-language-cxx/src/test/kotlin/de/fraunhofer/aisec/cpg/frontends/cxx/CXXCompilationDatabaseTest.kt +++ b/cpg-language-cxx/src/test/kotlin/de/fraunhofer/aisec/cpg/frontends/cxx/CXXCompilationDatabaseTest.kt @@ -130,8 +130,7 @@ class CXXCompilationDatabaseTest { assertEquals(2, tus.size) val ref = mapOf("main_tu_1.c" to 1, "main_tu_2.c" to 2) - for (i in tus.indices) { - val tu = tus[i] + for (tu in tus) { val value = ref[File(tu.name.toString()).name] val mainFunc = tu.byNameOrNull("main") assertNotNull(mainFunc)