summaryrefslogtreecommitdiffstats
path: root/generic/tclBasic.c
diff options
context:
space:
mode:
Diffstat (limited to 'generic/tclBasic.c')
-rw-r--r--generic/tclBasic.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/generic/tclBasic.c b/generic/tclBasic.c
index cb14afd..dfd27d2 100644
--- a/generic/tclBasic.c
+++ b/generic/tclBasic.c
@@ -4285,17 +4285,19 @@ EvalObjvCore(
int
TclNRRunCallbacks(
Tcl_Interp *interp,
- int result) /* Callbacks are run until the first NRRoot.*/
+ int result)
{
NRE_callback *cbPtr;
- Tcl_NRPostProc *procPtr;
- while (TOP_CB(interp) && (TOP_CB(interp)->procPtr != NRRoot)) {
- POP_CB(interp, cbPtr);
- procPtr = cbPtr->procPtr;
- result = procPtr(cbPtr->data, interp, result);
- }
+ /* Callbacks are run until the first NRRoot.*/
+
+ do {
+ POP_CB(interp, cbPtr);
+ result = (cbPtr->procPtr)(cbPtr->data, interp, result);
+ } while (TOP_CB(interp) && (TOP_CB(interp)->procPtr != NRRoot));
+
if (TOP_CB(interp)) {
+ /* pop the remaining NRRoot */
POP_CB(interp, cbPtr);
}
return result;