diff options
Diffstat (limited to 'dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpoints.java')
-rw-r--r-- | dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpoints.java | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpoints.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpoints.java index ecf10d6b089..abc6e6aa5c0 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpoints.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpoints.java @@ -166,7 +166,22 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I fBreakpoints.put(ctx, map); return map; } - + + /** + * Create a new effective breakpoint data object + * + * @param breakpoint + * backend breakpoint to create DSF object from + * @return breakpoint data object + * @since 5.3 + */ + @ThreadSafe + public MIBreakpointDMData createMIBreakpointDMData(MIBreakpoint breakpoint) { + @SuppressWarnings("deprecation") + MIBreakpointDMData data = new MIBreakpointDMData(breakpoint); + return data; + } + /** * Create a new MI breakpoint * @@ -451,7 +466,7 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I MIBreakpoint[] breakpoints = getData().getMIBreakpoints(); IBreakpointDMContext[] result = new IBreakpointDMContext[breakpoints.length]; for (int i = 0; i < breakpoints.length; i++) { - MIBreakpointDMData breakpoint = new MIBreakpointDMData(breakpoints[i]); + MIBreakpointDMData breakpoint = createMIBreakpointDMData(breakpoints[i]); String reference = breakpoint.getReference(); result[i] = new MIBreakpointDMContext(MIBreakpoints.this, new IDMContext[] { context }, reference); breakpointContext.put(reference, breakpoint); @@ -507,8 +522,9 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I } // No need to go to the back-end for this one - IBreakpointDMData breakpointCopy = new MIBreakpointDMData(contextBreakpoints.get(breakpoint.getReference())); - drm.setData(breakpointCopy); + MIBreakpointDMData breakpointDMData = contextBreakpoints.get(breakpoint.getReference()); + IBreakpointDMData breakpointDMDataCopy = breakpointDMData.copy(); + drm.setData(breakpointDMDataCopy); drm.done(); } @@ -699,7 +715,7 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I } // Create a breakpoint object and store it in the map - final MIBreakpointDMData newBreakpoint = new MIBreakpointDMData(getData().getMIBreakpoints()[0]); + final MIBreakpointDMData newBreakpoint = createMIBreakpointDMData(getData().getMIBreakpoints()[0]); String reference = newBreakpoint.getNumber(); if (reference.isEmpty()) { rm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, BREAKPOINT_INSERTION_FAILURE, null)); @@ -789,7 +805,7 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I } // Create a breakpoint object and store it in the map - final MIBreakpointDMData newBreakpoint = new MIBreakpointDMData(getData().getMIBreakpoints()[0]); + final MIBreakpointDMData newBreakpoint = createMIBreakpointDMData(getData().getMIBreakpoints()[0]); String reference = newBreakpoint.getNumber(); if (reference.isEmpty()) { drm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, WATCHPOINT_INSERTION_FAILURE, null)); @@ -879,7 +895,7 @@ public class MIBreakpoints extends AbstractDsfService implements IBreakpoints, I } // Create a breakpoint object and store it in the map - final MIBreakpointDMData newBreakpoint = new MIBreakpointDMData(miBkpt); + final MIBreakpointDMData newBreakpoint = createMIBreakpointDMData(miBkpt); String reference = newBreakpoint.getNumber(); if (reference.isEmpty()) { rm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, REQUEST_FAILED, CATCHPOINT_INSERTION_FAILURE, null)); |