diff options
author | Eugene Tarassov | 2011-12-12 23:18:07 +0000 |
---|---|---|
committer | Eugene Tarassov | 2011-12-12 23:18:07 +0000 |
commit | bd9b2e9b967359e79dead8a2a2935d0fdcbafae3 (patch) | |
tree | bbf8d8f245613be2aaca37eb3ef5458886843dc7 | |
parent | 2018bb0e65c92e632162640b8e0125e0568aae3c (diff) | |
parent | fd50721ffe2e1599fe18489e7b7a91da426c85d9 (diff) | |
download | org.eclipse.tcf.agent-bd9b2e9b967359e79dead8a2a2935d0fdcbafae3.tar.gz org.eclipse.tcf.agent-bd9b2e9b967359e79dead8a2a2935d0fdcbafae3.tar.xz org.eclipse.tcf.agent-bd9b2e9b967359e79dead8a2a2935d0fdcbafae3.zip |
Merge remote branch 'remotes/origin/master' into juno-refactoring
-rw-r--r-- | agent/tcf/main/main.c | 1 | ||||
-rw-r--r-- | agent/tcf/services/breakpoints.c | 14 |
2 files changed, 12 insertions, 3 deletions
diff --git a/agent/tcf/main/main.c b/agent/tcf/main/main.c index 64c621e4..1d4099fc 100644 --- a/agent/tcf/main/main.c +++ b/agent/tcf/main/main.c @@ -298,6 +298,7 @@ int main(int argc, char ** argv) { s = servlink2channelserverp(channel_server_root.next); server_properties = channel_peer_to_json(s->ps); printf("Server-Properties: %s\n", server_properties); + fflush(stdout); trace(LOG_ALWAYS, "Server-Properties: %s", server_properties); loc_free(server_properties); } diff --git a/agent/tcf/services/breakpoints.c b/agent/tcf/services/breakpoints.c index ab43d175..46e830ee 100644 --- a/agent/tcf/services/breakpoints.c +++ b/agent/tcf/services/breakpoints.c @@ -908,9 +908,14 @@ static void free_bp(BreakpointInfo * bp) { loc_free(bp); } +static void send_event_context_removed(BreakpointInfo * bp); + static void notify_breakpoints_status(void) { LINK * l = NULL; + assert(list_is_empty(&evaluations_posted)); + assert(list_is_empty(&evaluations_active)); assert(generation_done == generation_active); + assert(generation_done == generation_posted); for (l = breakpoints.next; l != &breakpoints;) { BreakpointInfo * bp = link_all2bp(l); l = l->next; @@ -949,7 +954,10 @@ static void notify_breakpoints_status(void) { } #endif if (bp->client_cnt == 0) { - if (bp->instruction_cnt == 0) free_bp(bp); + if (bp->instruction_cnt == 0) { + send_event_context_removed(bp); + free_bp(bp); + } } else if (bp->status_changed) { if (*bp->id) send_event_breakpoint_status(NULL, bp); @@ -1803,9 +1811,9 @@ static void remove_ref(Channel * c, BreakpointRef * br) { list_remove(&br->link_bp); loc_free(br); if (list_is_empty(&bp->link_clients)) { - send_event_context_removed(bp); assert(bp->client_cnt == 0); replant_breakpoint(bp); + if (generation_done == generation_posted) notify_breakpoints_status(); } } @@ -2530,7 +2538,7 @@ static void event_code_unmapped(Context * ctx, ContextAddress addr, ContextAddre addr += sz; size -= sz; } - if (cnt > 0 && generation_done == generation_active) notify_breakpoints_status(); + if (cnt > 0 && generation_done == generation_posted) notify_breakpoints_status(); } #endif |