summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorliuwentan <[email protected]>2023-06-02 11:37:13 +0800
committerliuwentan <[email protected]>2023-06-02 11:37:13 +0800
commit2ea7f378917d75f47f2d0ae46d2b0e94f39c4d20 (patch)
treea35eada7f3f4c92c8d7cfb4cb328caf2881868b0
parentc65ab26536b10f45ab83330d99dffda282685bb2 (diff)
[OPTIMIZE]groups not in g2g table no need to get super groupsv4.0.21
-rw-r--r--src/maat_group.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/maat_group.c b/src/maat_group.c
index 033eba1..554f872 100644
--- a/src/maat_group.c
+++ b/src/maat_group.c
@@ -927,13 +927,13 @@ void verify_candidate_super_group_ids(struct maat_group_topology *group_topo,
}
utarray_push_back(kept_super_group_ids, p);
- utarray_sort(kept_super_group_ids, compare_group_id);
-
+
if (!utarray_find(all_hit_group_ids, p, compare_group_id)) {
utarray_push_back(all_hit_group_ids, p);
utarray_sort(all_hit_group_ids, compare_group_id);
}
}
+ utarray_sort(kept_super_group_ids, compare_group_id);
/**
* candidate_group_ids clone all_hit_group_ids
@@ -1080,8 +1080,23 @@ size_t group2group_runtime_get_super_groups(void *g2g_runtime, long long *group_
}
struct group2group_runtime *g2g_rt = (struct group2group_runtime *)g2g_runtime;
+ long long g2g_group_ids[n_group_ids];
+ size_t g2g_group_ids_cnt = 0;
+
+ for (size_t i = 0; i < n_group_ids; i++) {
+ struct maat_group *group = group_topology_find_group(g2g_rt->group_topo, group_ids[i]);
+ if (NULL == group) {
+ continue;
+ }
+
+ g2g_group_ids[g2g_group_ids_cnt++] = group_ids[i];
+ }
+
+ if (0 == g2g_group_ids_cnt) {
+ return 0;
+ }
- return group_topology_get_super_groups(g2g_rt->group_topo, group_ids, n_group_ids,
+ return group_topology_get_super_groups(g2g_rt->group_topo, g2g_group_ids, g2g_group_ids_cnt,
super_group_ids, super_group_ids_size);
}