- xbt_dict_cursor_t cursor = NULL;
- container_t child;
- char *child_name;
- container_t a1_try = NULL;
- container_t a2_try = NULL;
- xbt_dict_foreach(root->children, cursor, child_name, child) {
- a1_try = findChild (child, a1);
- a2_try = findChild (child, a2);
- if (a1_try && a2_try) return child;
+ //find the lowest ancestor
+ p = NULL;
+ int i = xbt_dynar_length (ancestors_a1) - 1;
+ int j = xbt_dynar_length (ancestors_a2) - 1;
+ while (i >= 0 && j >= 0){
+ container_t a1p = *(container_t*)xbt_dynar_get_ptr (ancestors_a1, i);
+ container_t a2p = *(container_t*)xbt_dynar_get_ptr (ancestors_a2, j);
+ if (a1p == a2p){
+ p = a1p;
+ }else{
+ break;
+ }
+ i--;
+ j--;