- DEBUG3("finishing wait for %p [data = %p, complete = %d]", *request, data, data->complete);
- // data == *request if sender is first to finish its wait
- // data != *request if receiver is first to finish its wait
- if(data->complete == 0) {
- // first arrives here
- data->complete = 1;
- if(data != *request) {
- // receveiver cleans its part
- xbt_free(*request);
- }
- } else {
- // second arrives here
- if(data != *request) {
- // receiver cleans everything
- xbt_free(data);
- }
+ DEBUG5("finishing wait for %p [src = %d, dst = %d, tag = %d, complete = %d]",
+ *request, (*request)->src, (*request)->dst, (*request)->tag, (*request)->complete);
+ DEBUG2("match %p, complete %d", (*request)->match, (*request)->match ? (*request)->match->complete : -1);
+ if((*request)->complete == 1) {