| 196 | } |
| 197 | |
| 198 | void fxClearBreakpoint(txMachine* the, txString thePath, txInteger theLine, size_t theID) |
| 199 | { |
| 200 | txID path; |
| 201 | txSlot** breakpointAddress; |
| 202 | txSlot* breakpoint; |
| 203 | |
| 204 | if (!thePath) |
| 205 | return; |
| 206 | if ((theID == 0) && (theLine == 0)) { |
| 207 | if (!c_strcmp(thePath, "exceptions")) { |
| 208 | the->breakOnExceptionsFlag = 0; |
| 209 | return; |
| 210 | } |
| 211 | if (!c_strcmp(thePath, "start")) { |
| 212 | the->breakOnStartFlag = 0; |
| 213 | return; |
| 214 | } |
| 215 | } |
| 216 | path = fxFindName(the, thePath); |
| 217 | if (!path) |
| 218 | return; |
| 219 | breakpointAddress = &(mxBreakpoints.value.list.first); |
| 220 | while ((breakpoint = *breakpointAddress)) { |
| 221 | if ((breakpoint->ID == path) && (breakpoint->value.breakpoint.line == theLine)) { |
| 222 | *breakpointAddress = breakpoint->next; |
| 223 | break; |
| 224 | } |
| 225 | breakpointAddress = &(breakpoint->next); |
| 226 | } |
| 227 | } |
| 228 | |
| 229 | void fxDebugCommand(txMachine* the) |
| 230 | { |
no test coverage detected