Repository: lucy-clownfish
Updated Branches:
  refs/heads/master c3aadd5b8 -> 8d8d86b1a


Protect against duplicate source or include dirs


Project: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/commit/8d8d86b1
Tree: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/tree/8d8d86b1
Diff: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/diff/8d8d86b1

Branch: refs/heads/master
Commit: 8d8d86b1ae6c83d5dda0ac7ff5ba611c1e4f6717
Parents: c3aadd5
Author: Nick Wellnhofer <[email protected]>
Authored: Sat Dec 6 10:05:59 2014 +0100
Committer: Nick Wellnhofer <[email protected]>
Committed: Sat Dec 6 10:05:59 2014 +0100

----------------------------------------------------------------------
 compiler/src/CFCHierarchy.c | 10 ++++++++++
 1 file changed, 10 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/8d8d86b1/compiler/src/CFCHierarchy.c
----------------------------------------------------------------------
diff --git a/compiler/src/CFCHierarchy.c b/compiler/src/CFCHierarchy.c
index dcb8c97..88cdb30 100644
--- a/compiler/src/CFCHierarchy.c
+++ b/compiler/src/CFCHierarchy.c
@@ -187,6 +187,11 @@ S_do_make_path(const char *path) {
 
 void
 CFCHierarchy_add_source_dir(CFCHierarchy *self, const char *source_dir) {
+    // Don't add directory twice.
+    for (size_t i = 0; self->sources[i] != NULL; ++i) {
+        if (strcmp(self->sources[i], source_dir) == 0) { return; }
+    }
+
     size_t n = self->num_sources;
     size_t size = (n + 2) * sizeof(char*);
     self->sources      = (char**)REALLOCATE(self->sources, size);
@@ -197,6 +202,11 @@ CFCHierarchy_add_source_dir(CFCHierarchy *self, const char 
*source_dir) {
 
 void
 CFCHierarchy_add_include_dir(CFCHierarchy *self, const char *include_dir) {
+    // Don't add directory twice.
+    for (size_t i = 0; self->includes[i] != NULL; ++i) {
+        if (strcmp(self->includes[i], include_dir) == 0) { return; }
+    }
+
     size_t n = self->num_includes;
     size_t size = (n + 2) * sizeof(char*);
     self->includes      = (char**)REALLOCATE(self->includes, size);

Reply via email to