Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEugene Tarassov2011-12-12 23:18:07 +0000
committerEugene Tarassov2011-12-12 23:18:07 +0000
commitbd9b2e9b967359e79dead8a2a2935d0fdcbafae3 (patch)
treebbf8d8f245613be2aaca37eb3ef5458886843dc7
parent2018bb0e65c92e632162640b8e0125e0568aae3c (diff)
parentfd50721ffe2e1599fe18489e7b7a91da426c85d9 (diff)
downloadorg.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.c1
-rw-r--r--agent/tcf/services/breakpoints.c14
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

Back to the top