summaryrefslogtreecommitdiffstats
path: root/generic/tclIORChan.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2024-04-19 11:48:02 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2024-04-19 11:48:02 (GMT)
commitdf7056bc09ff07d9e85065b1a2e92d811907bafc (patch)
tree6885c3450ab1e060cf0da87fa0fc479ca976193f /generic/tclIORChan.c
parent92fae010a460856ec8cdf17f003df1822e969eaf (diff)
downloadtcl-df7056bc09ff07d9e85065b1a2e92d811907bafc.zip
tcl-df7056bc09ff07d9e85065b1a2e92d811907bafc.tar.gz
tcl-df7056bc09ff07d9e85065b1a2e92d811907bafc.tar.bz2
More code cleanup, backported from 8.7
Diffstat (limited to 'generic/tclIORChan.c')
-rw-r--r--generic/tclIORChan.c319
1 files changed, 161 insertions, 158 deletions
diff --git a/generic/tclIORChan.c b/generic/tclIORChan.c
index 7a4b250..727239b 100644
--- a/generic/tclIORChan.c
+++ b/generic/tclIORChan.c
@@ -78,7 +78,7 @@ static const Tcl_ChannelType tclRChannelType = {
NULL, /* Handle events. NULL'able */
ReflectSeekWide, /* Move access point (64 bit). NULL'able */
#ifdef TCL_THREADS
- ReflectThread, /* thread action, tracking owner */
+ ReflectThread, /* thread action, tracking owner */
#else
NULL, /* thread action */
#endif
@@ -193,7 +193,8 @@ typedef enum {
(FLAG(METH_INIT) | FLAG(METH_FINAL) | FLAG(METH_WATCH))
#define NULLABLE_METHODS \
(FLAG(METH_BLOCKING) | FLAG(METH_SEEK) | \
- FLAG(METH_CONFIGURE) | FLAG(METH_CGET) | FLAG(METH_CGETALL))
+ FLAG(METH_CONFIGURE) | FLAG(METH_CGET) | \
+ FLAG(METH_CGETALL))
#define RANDW \
(TCL_READABLE | TCL_WRITABLE)
@@ -409,7 +410,7 @@ static void SrcExitProc(void *clientData);
static void ForwardSetObjError(ForwardParam *p, Tcl_Obj *objPtr);
static ReflectedChannelMap * GetThreadReflectedChannelMap(void);
-static void DeleteThreadReflectedChannelMap(void *clientData);
+static Tcl_ExitProc DeleteThreadReflectedChannelMap;
#endif /* TCL_THREADS */
@@ -436,8 +437,7 @@ static int InvokeTclMethod(ReflectedChannel *rcPtr,
Tcl_Obj *argTwoObj, Tcl_Obj **resultObjPtr);
static ReflectedChannelMap * GetReflectedChannelMap(Tcl_Interp *interp);
-static void DeleteReflectedChannelMap(void *clientData,
- Tcl_Interp *interp);
+static Tcl_InterpDeleteProc DeleteReflectedChannelMap;
static int ErrnoReturn(ReflectedChannel *rcPtr, Tcl_Obj *resObj);
static void MarkDead(ReflectedChannel *rcPtr);
@@ -563,6 +563,9 @@ TclChanCreateObjCmd(
rcId = NextHandle();
rcPtr = NewReflectedChannel(interp, cmdObj, mode, rcId);
+ if (!rcPtr) {
+ return TCL_ERROR;
+ }
/*
* Invoke 'initialize' and validate that the handler is present and ok.
@@ -593,9 +596,9 @@ TclChanCreateObjCmd(
*/
if (TclListObjGetElements(NULL, resObj, &listc, &listv) != TCL_OK) {
- Tcl_SetObjResult(interp, Tcl_ObjPrintf(
- "chan handler \"%s initialize\" returned non-list: %s",
- TclGetString(cmdObj), TclGetString(resObj)));
+ Tcl_SetObjResult(interp, Tcl_ObjPrintf(
+ "chan handler \"%s initialize\" returned non-list: %s",
+ TclGetString(cmdObj), TclGetString(resObj)));
Tcl_DecrRefCount(resObj);
goto error;
}
@@ -619,37 +622,37 @@ TclChanCreateObjCmd(
Tcl_DecrRefCount(resObj);
if ((REQUIRED_METHODS & methods) != REQUIRED_METHODS) {
- Tcl_SetObjResult(interp, Tcl_ObjPrintf(
- "chan handler \"%s\" does not support all required methods",
- TclGetString(cmdObj)));
+ Tcl_SetObjResult(interp, Tcl_ObjPrintf(
+ "chan handler \"%s\" does not support all required methods",
+ TclGetString(cmdObj)));
goto error;
}
if ((mode & TCL_READABLE) && !HAS(methods, METH_READ)) {
- Tcl_SetObjResult(interp, Tcl_ObjPrintf(
- "chan handler \"%s\" lacks a \"read\" method",
- TclGetString(cmdObj)));
+ Tcl_SetObjResult(interp, Tcl_ObjPrintf(
+ "chan handler \"%s\" lacks a \"read\" method",
+ TclGetString(cmdObj)));
goto error;
}
if ((mode & TCL_WRITABLE) && !HAS(methods, METH_WRITE)) {
- Tcl_SetObjResult(interp, Tcl_ObjPrintf(
- "chan handler \"%s\" lacks a \"write\" method",
- TclGetString(cmdObj)));
+ Tcl_SetObjResult(interp, Tcl_ObjPrintf(
+ "chan handler \"%s\" lacks a \"write\" method",
+ TclGetString(cmdObj)));
goto error;
}
if (!IMPLIES(HAS(methods, METH_CGET), HAS(methods, METH_CGETALL))) {
- Tcl_SetObjResult(interp, Tcl_ObjPrintf(
- "chan handler \"%s\" supports \"cget\" but not \"cgetall\"",
- TclGetString(cmdObj)));
+ Tcl_SetObjResult(interp, Tcl_ObjPrintf(
+ "chan handler \"%s\" supports \"cget\" but not \"cgetall\"",
+ TclGetString(cmdObj)));
goto error;
}
if (!IMPLIES(HAS(methods, METH_CGETALL), HAS(methods, METH_CGET))) {
- Tcl_SetObjResult(interp, Tcl_ObjPrintf(
- "chan handler \"%s\" supports \"cgetall\" but not \"cget\"",
- TclGetString(cmdObj)));
+ Tcl_SetObjResult(interp, Tcl_ObjPrintf(
+ "chan handler \"%s\" supports \"cgetall\" but not \"cget\"",
+ TclGetString(cmdObj)));
goto error;
}
@@ -720,7 +723,7 @@ TclChanCreateObjCmd(
*/
Tcl_SetObjResult(interp,
- Tcl_NewStringObj(chanPtr->state->channelName, -1));
+ Tcl_NewStringObj(chanPtr->state->channelName, -1));
return TCL_OK;
error:
@@ -793,7 +796,7 @@ ReflectEventDelete(
ReflectEvent *e = (ReflectEvent *) ev;
if ((ev->proc != ReflectEventRun) || ((cd != NULL) && (cd != e->rcPtr))) {
- return 0;
+ return 0;
}
return 1;
}
@@ -853,7 +856,7 @@ TclChanPostEventObjCmd(
if (hPtr == NULL) {
Tcl_SetObjResult(interp, Tcl_ObjPrintf(
- "can not find reflected channel named \"%s\"", chanId));
+ "can not find reflected channel named \"%s\"", chanId));
Tcl_SetErrorCode(interp, "TCL", "LOOKUP", "CHANNEL", chanId, (char *)NULL);
return TCL_ERROR;
}
@@ -917,8 +920,8 @@ TclChanPostEventObjCmd(
if (events & ~rcPtr->interest) {
Tcl_SetObjResult(interp, Tcl_ObjPrintf(
- "tried to post events channel \"%s\" is not interested in",
- chanId));
+ "tried to post events channel \"%s\" is not interested in",
+ chanId));
return TCL_ERROR;
}
@@ -929,40 +932,40 @@ TclChanPostEventObjCmd(
#ifdef TCL_THREADS
if (rcPtr->owner == rcPtr->thread) {
#endif
- Tcl_NotifyChannel(chan, events);
+ Tcl_NotifyChannel(chan, events);
#ifdef TCL_THREADS
} else {
- ReflectEvent *ev = (ReflectEvent *)ckalloc(sizeof(ReflectEvent));
-
- ev->header.proc = ReflectEventRun;
- ev->events = events;
- ev->rcPtr = rcPtr;
-
- /*
- * We are not preserving the structure here. When the channel is
- * closed any pending events are deleted, see ReflectClose(), and
- * ReflectEventDelete(). Trying to preserve and later release when the
- * event is run may generate a situation where the channel structure
- * is deleted but not our structure, crashing in
- * FreeReflectedChannel().
- *
- * Force creation of the RCM, for proper cleanup on thread teardown.
- * The teardown of unprocessed events is currently coupled to the
- * thread reflected channel map
- */
-
- (void) GetThreadReflectedChannelMap();
-
- /*
- * XXX Race condition !!
- * XXX The destination thread may not exist anymore already.
- * XXX (Delayed postevent executed after channel got removed).
- * XXX Can we detect this ? (check the validity of the owner threadid ?)
- * XXX Actually, in that case the channel should be dead also !
- */
-
- Tcl_ThreadQueueEvent(rcPtr->owner, (Tcl_Event *) ev, TCL_QUEUE_TAIL);
- Tcl_ThreadAlert(rcPtr->owner);
+ ReflectEvent *ev = (ReflectEvent *)ckalloc(sizeof(ReflectEvent));
+
+ ev->header.proc = ReflectEventRun;
+ ev->events = events;
+ ev->rcPtr = rcPtr;
+
+ /*
+ * We are not preserving the structure here. When the channel is
+ * closed any pending events are deleted, see ReflectClose(), and
+ * ReflectEventDelete(). Trying to preserve and later release when the
+ * event is run may generate a situation where the channel structure
+ * is deleted but not our structure, crashing in
+ * FreeReflectedChannel().
+ *
+ * Force creation of the RCM, for proper cleanup on thread teardown.
+ * The teardown of unprocessed events is currently coupled to the
+ * thread reflected channel map
+ */
+
+ (void) GetThreadReflectedChannelMap();
+
+ /*
+ * XXX Race condition !!
+ * XXX The destination thread may not exist anymore already.
+ * XXX (Delayed postevent executed after channel got removed).
+ * XXX Can we detect this ? (check the validity of the owner threadid ?)
+ * XXX Actually, in that case the channel should be dead also !
+ */
+
+ Tcl_ThreadQueueEvent(rcPtr->owner, (Tcl_Event *) ev, TCL_QUEUE_TAIL);
+ Tcl_ThreadAlert(rcPtr->owner);
}
#endif
@@ -1105,7 +1108,7 @@ TclChanCaughtErrorBypass(
* ReflectClose/ReflectClose2 --
*
* This function is invoked when the channel is closed, to delete the
- * driver specific instance data.
+ * driver-specific instance data.
*
* Results:
* A Posix error.
@@ -1153,11 +1156,11 @@ ReflectClose(
ForwardOpToHandlerThread(rcPtr, ForwardedClose, &p);
result = p.base.code;
- /*
- * Now squash the pending reflection events for this channel.
- */
+ /*
+ * Now squash the pending reflection events for this channel.
+ */
- Tcl_DeleteEvents(ReflectEventDelete, rcPtr);
+ Tcl_DeleteEvents(ReflectEventDelete, rcPtr);
if (result != TCL_OK) {
FreeReceivedError(&p);
@@ -1185,11 +1188,11 @@ ReflectClose(
ForwardOpToHandlerThread(rcPtr, ForwardedClose, &p);
result = p.base.code;
- /*
- * Now squash the pending reflection events for this channel.
- */
+ /*
+ * Now squash the pending reflection events for this channel.
+ */
- Tcl_DeleteEvents(ReflectEventDelete, rcPtr);
+ Tcl_DeleteEvents(ReflectEventDelete, rcPtr);
if (result != TCL_OK) {
PassReceivedErrorInterp(interp, &p);
@@ -1330,18 +1333,18 @@ ReflectInput(
if (code < 0) {
*errorCodePtr = -code;
- goto error;
+ goto error;
}
Tcl_SetChannelError(rcPtr->chan, resObj);
- goto invalid;
+ goto invalid;
}
bytev = Tcl_GetByteArrayFromObj(resObj, &bytec);
if (toRead < bytec) {
SetChannelErrorStr(rcPtr->chan, msg_read_toomuch);
- goto invalid;
+ goto invalid;
}
*errorCodePtr = EOK;
@@ -1411,9 +1414,9 @@ ReflectOutput(
*errorCodePtr = -p.base.code;
} else {
- PassReceivedError(rcPtr->chan, &p);
- *errorCodePtr = EINVAL;
- }
+ PassReceivedError(rcPtr->chan, &p);
+ *errorCodePtr = EINVAL;
+ }
p.output.toWrite = -1;
} else {
*errorCodePtr = EOK;
@@ -1437,11 +1440,11 @@ ReflectOutput(
if (code < 0) {
*errorCodePtr = -code;
- goto error;
+ goto error;
}
Tcl_SetChannelError(rcPtr->chan, resObj);
- goto invalid;
+ goto invalid;
}
if (Tcl_InterpDeleted(rcPtr->interp)) {
@@ -1450,11 +1453,11 @@ ReflectOutput(
*/
SetChannelErrorStr(rcPtr->chan, msg_send_dstlost);
- goto invalid;
+ goto invalid;
}
if (Tcl_GetIntFromObj(rcPtr->interp, resObj, &written) != TCL_OK) {
Tcl_SetChannelError(rcPtr->chan, MarshallError(rcPtr->interp));
- goto invalid;
+ goto invalid;
}
if ((written == 0) && (toWrite > 0)) {
@@ -1464,7 +1467,7 @@ ReflectOutput(
*/
SetChannelErrorStr(rcPtr->chan, msg_write_nothing);
- goto invalid;
+ goto invalid;
}
if (toWrite < written) {
/*
@@ -1474,7 +1477,7 @@ ReflectOutput(
*/
SetChannelErrorStr(rcPtr->chan, msg_write_toomuch);
- goto invalid;
+ goto invalid;
}
*errorCodePtr = EOK;
@@ -1550,24 +1553,24 @@ ReflectSeekWide(
offObj = Tcl_NewWideIntObj(offset);
baseObj = Tcl_NewStringObj(
- (seekMode == SEEK_SET) ? "start" :
- (seekMode == SEEK_CUR) ? "current" : "end", -1);
+ (seekMode == SEEK_SET) ? "start" :
+ (seekMode == SEEK_CUR) ? "current" : "end", -1);
Tcl_IncrRefCount(offObj);
Tcl_IncrRefCount(baseObj);
if (InvokeTclMethod(rcPtr, METH_SEEK, offObj, baseObj, &resObj)!=TCL_OK) {
Tcl_SetChannelError(rcPtr->chan, resObj);
- goto invalid;
+ goto invalid;
}
- if (Tcl_GetWideIntFromObj(rcPtr->interp, resObj, &newLoc) != TCL_OK) {
+ if (TclGetWideIntFromObj(rcPtr->interp, resObj, &newLoc) != TCL_OK) {
Tcl_SetChannelError(rcPtr->chan, MarshallError(rcPtr->interp));
- goto invalid;
+ goto invalid;
}
if (newLoc < 0) {
SetChannelErrorStr(rcPtr->chan, msg_seek_beforestart);
- goto invalid;
+ goto invalid;
}
*errorCodePtr = EOK;
@@ -1766,14 +1769,14 @@ ReflectThread(
switch (action) {
case TCL_CHANNEL_THREAD_INSERT:
- rcPtr->owner = Tcl_GetCurrentThread();
- break;
+ rcPtr->owner = Tcl_GetCurrentThread();
+ break;
case TCL_CHANNEL_THREAD_REMOVE:
- rcPtr->owner = NULL;
- break;
+ rcPtr->owner = NULL;
+ break;
default:
- Tcl_Panic("Unknown thread action code.");
- break;
+ Tcl_Panic("Unknown thread action code.");
+ break;
}
}
@@ -1932,14 +1935,14 @@ ReflectGetOption(
method = METH_CGET;
optionObj = Tcl_NewStringObj(optionName, -1);
- Tcl_IncrRefCount(optionObj);
+ Tcl_IncrRefCount(optionObj);
}
Tcl_Preserve(rcPtr);
if (InvokeTclMethod(rcPtr, method, optionObj, NULL, &resObj)!=TCL_OK) {
UnmarshallErrorResult(interp, resObj);
- goto error;
+ goto error;
}
/*
@@ -1949,7 +1952,7 @@ ReflectGetOption(
if (optionObj != NULL) {
TclDStringAppendObj(dsPtr, resObj);
- goto ok;
+ goto ok;
}
/*
@@ -1964,7 +1967,7 @@ ReflectGetOption(
*/
if (TclListObjGetElements(interp, resObj, &listc, &listv) != TCL_OK) {
- goto error;
+ goto error;
}
if ((listc % 2) == 1) {
@@ -1977,7 +1980,7 @@ ReflectGetOption(
"Expected list with even number of "
"elements, got %d element%s instead", listc,
(listc == 1 ? "" : "s")));
- goto error;
+ goto error;
} else {
int len;
const char *str = TclGetStringFromObj(resObj, &len);
@@ -1986,14 +1989,14 @@ ReflectGetOption(
TclDStringAppendLiteral(dsPtr, " ");
Tcl_DStringAppend(dsPtr, str, len);
}
- goto ok;
+ goto ok;
}
ok:
result = TCL_OK;
stop:
if (optionObj) {
- Tcl_DecrRefCount(optionObj);
+ Tcl_DecrRefCount(optionObj);
}
Tcl_DecrRefCount(resObj); /* Remove reference held from invoke */
Tcl_Release(rcPtr);
@@ -2153,7 +2156,6 @@ NewReflectedChannel(
rcPtr->mode = mode;
rcPtr->interest = 0; /* Initially no interest registered */
- /* ASSERT: cmdpfxObj is a Tcl List */
rcPtr->cmd = TclListObjCopy(NULL, cmdpfxObj);
Tcl_IncrRefCount(rcPtr->cmd);
rcPtr->methods = Tcl_NewListObj(METH_WRITE + 1, NULL);
@@ -2279,10 +2281,10 @@ InvokeTclMethod(
Tcl_IncrRefCount(resObj);
}
- /*
- * Not touching argOneObj, argTwoObj, they have not been used.
- * See the contract as well.
- */
+ /*
+ * Not touching argOneObj, argTwoObj, they have not been used.
+ * See the contract as well.
+ */
return TCL_ERROR;
}
@@ -2293,7 +2295,6 @@ InvokeTclMethod(
*/
cmd = TclListObjCopy(NULL, rcPtr->cmd);
-
Tcl_ListObjIndex(NULL, rcPtr->methods, method, &methObj);
Tcl_ListObjAppendElement(NULL, cmd, methObj);
Tcl_ListObjAppendElement(NULL, cmd, rcPtr->name);
@@ -2464,8 +2465,7 @@ GetReflectedChannelMap(
if (rcmPtr == NULL) {
rcmPtr = (ReflectedChannelMap *)ckalloc(sizeof(ReflectedChannelMap));
Tcl_InitHashTable(&rcmPtr->map, TCL_STRING_KEYS);
- Tcl_SetAssocData(interp, RCMKEY,
- (Tcl_InterpDeleteProc *)DeleteReflectedChannelMap, rcmPtr);
+ Tcl_SetAssocData(interp, RCMKEY, DeleteReflectedChannelMap, rcmPtr);
}
return rcmPtr;
}
@@ -2580,11 +2580,11 @@ DeleteReflectedChannelMap(
/*
* The receiver for the event exited, before processing the event. We
* detach the result now, wake the originator up and signal failure.
- *
- * Attention: Results may have been detached already, by either the
- * receiver, or this thread, as part of other parts in the thread
- * teardown. Such results are ignored. See ticket [b47b176adf] for the
- * identical race condition in Tcl 8.6 IORTrans.
+ *
+ * Attention: Results may have been detached already, by either the
+ * receiver, or this thread, as part of other parts in the thread
+ * teardown. Such results are ignored. See ticket [b47b176adf] for the
+ * identical race condition in Tcl 8.6 IORTrans.
*/
evPtr = resultPtr->evPtr;
@@ -2732,11 +2732,11 @@ DeleteThreadReflectedChannelMap(
/*
* The receiver for the event exited, before processing the event. We
* detach the result now, wake the originator up and signal failure.
- *
- * Attention: Results may have been detached already, by either the
- * receiver, or this thread, as part of other parts in the thread
- * teardown. Such results are ignored. See ticket [b47b176adf] for the
- * identical race condition in Tcl 8.6 IORTrans.
+ *
+ * Attention: Results may have been detached already, by either the
+ * receiver, or this thread, as part of other parts in the thread
+ * teardown. Such results are ignored. See ticket [b47b176adf] for the
+ * identical race condition in Tcl 8.6 IORTrans.
*/
evPtr = resultPtr->evPtr;
@@ -2945,7 +2945,7 @@ ForwardProc(
ForwardParam *paramPtr = evPtr->param;
Tcl_Obj *resObj = NULL; /* Interp result of InvokeTclMethod */
ReflectedChannelMap *rcmPtr;/* Map of reflected channels with handlers in
- * this interp. */
+ * this interp. */
Tcl_HashEntry *hPtr; /* Entry in the above map */
(void)mask;
@@ -2989,12 +2989,12 @@ ForwardProc(
rcmPtr = GetReflectedChannelMap(interp);
hPtr = Tcl_FindHashEntry(&rcmPtr->map,
- Tcl_GetChannelName(rcPtr->chan));
+ Tcl_GetChannelName(rcPtr->chan));
Tcl_DeleteHashEntry(hPtr);
rcmPtr = GetThreadReflectedChannelMap();
hPtr = Tcl_FindHashEntry(&rcmPtr->map,
- Tcl_GetChannelName(rcPtr->chan));
+ Tcl_GetChannelName(rcPtr->chan));
Tcl_DeleteHashEntry(hPtr);
MarkDead(rcPtr);
break;
@@ -3036,17 +3036,17 @@ ForwardProc(
paramPtr->input.toRead = bytec;
}
}
- Tcl_Release(rcPtr);
- Tcl_DecrRefCount(toReadObj);
+ Tcl_Release(rcPtr);
+ Tcl_DecrRefCount(toReadObj);
break;
}
case ForwardedOutput: {
Tcl_Obj *bufObj = Tcl_NewByteArrayObj((unsigned char *)
- paramPtr->output.buf, paramPtr->output.toWrite);
- Tcl_IncrRefCount(bufObj);
+ paramPtr->output.buf, paramPtr->output.toWrite);
+ Tcl_IncrRefCount(bufObj);
- Tcl_Preserve(rcPtr);
+ Tcl_Preserve(rcPtr);
if (InvokeTclMethod(rcPtr, METH_WRITE, bufObj, NULL, &resObj) != TCL_OK) {
int code = ErrnoReturn(rcPtr, resObj);
@@ -3075,16 +3075,19 @@ ForwardProc(
paramPtr->output.toWrite = written;
}
}
- Tcl_Release(rcPtr);
- Tcl_DecrRefCount(bufObj);
+ Tcl_Release(rcPtr);
+ Tcl_DecrRefCount(bufObj);
break;
}
case ForwardedSeek: {
- Tcl_Obj *offObj = Tcl_NewWideIntObj(paramPtr->seek.offset);
- Tcl_Obj *baseObj = Tcl_NewStringObj(
- (paramPtr->seek.seekMode==SEEK_SET) ? "start" :
- (paramPtr->seek.seekMode==SEEK_CUR) ? "current" : "end", -1);
+ Tcl_Obj *offObj;
+ Tcl_Obj *baseObj;
+
+ offObj = Tcl_NewWideIntObj(paramPtr->seek.offset);
+ baseObj = Tcl_NewStringObj(
+ (paramPtr->seek.seekMode==SEEK_SET) ? "start" :
+ (paramPtr->seek.seekMode==SEEK_CUR) ? "current" : "end", -1);
Tcl_IncrRefCount(offObj);
Tcl_IncrRefCount(baseObj);
@@ -3101,7 +3104,7 @@ ForwardProc(
Tcl_WideInt newLoc;
- if (Tcl_GetWideIntFromObj(interp, resObj, &newLoc) == TCL_OK) {
+ if (TclGetWideIntFromObj(interp, resObj, &newLoc) == TCL_OK) {
if (newLoc < 0) {
ForwardSetStaticError(paramPtr, msg_seek_beforestart);
paramPtr->seek.offset = -1;
@@ -3115,35 +3118,35 @@ ForwardProc(
paramPtr->seek.offset = -1;
}
}
- Tcl_Release(rcPtr);
- Tcl_DecrRefCount(offObj);
- Tcl_DecrRefCount(baseObj);
+ Tcl_Release(rcPtr);
+ Tcl_DecrRefCount(offObj);
+ Tcl_DecrRefCount(baseObj);
break;
}
case ForwardedWatch: {
Tcl_Obj *maskObj = DecodeEventMask(paramPtr->watch.mask);
- /* assert maskObj.refCount == 1 */
+ /* assert maskObj.refCount == 1 */
- Tcl_Preserve(rcPtr);
+ Tcl_Preserve(rcPtr);
rcPtr->interest = paramPtr->watch.mask;
(void) InvokeTclMethod(rcPtr, METH_WATCH, maskObj, NULL, NULL);
Tcl_DecrRefCount(maskObj);
- Tcl_Release(rcPtr);
+ Tcl_Release(rcPtr);
break;
}
case ForwardedBlock: {
Tcl_Obj *blockObj = Tcl_NewBooleanObj(!paramPtr->block.nonblocking);
- Tcl_IncrRefCount(blockObj);
- Tcl_Preserve(rcPtr);
+ Tcl_IncrRefCount(blockObj);
+ Tcl_Preserve(rcPtr);
if (InvokeTclMethod(rcPtr, METH_BLOCKING, blockObj, NULL,
- &resObj) != TCL_OK) {
+ &resObj) != TCL_OK) {
ForwardSetObjError(paramPtr, resObj);
}
- Tcl_Release(rcPtr);
- Tcl_DecrRefCount(blockObj);
+ Tcl_Release(rcPtr);
+ Tcl_DecrRefCount(blockObj);
break;
}
@@ -3151,16 +3154,16 @@ ForwardProc(
Tcl_Obj *optionObj = Tcl_NewStringObj(paramPtr->setOpt.name, -1);
Tcl_Obj *valueObj = Tcl_NewStringObj(paramPtr->setOpt.value, -1);
- Tcl_IncrRefCount(optionObj);
- Tcl_IncrRefCount(valueObj);
- Tcl_Preserve(rcPtr);
+ Tcl_IncrRefCount(optionObj);
+ Tcl_IncrRefCount(valueObj);
+ Tcl_Preserve(rcPtr);
if (InvokeTclMethod(rcPtr, METH_CONFIGURE, optionObj, valueObj,
- &resObj) != TCL_OK) {
+ &resObj) != TCL_OK) {
ForwardSetObjError(paramPtr, resObj);
}
- Tcl_Release(rcPtr);
- Tcl_DecrRefCount(optionObj);
- Tcl_DecrRefCount(valueObj);
+ Tcl_Release(rcPtr);
+ Tcl_DecrRefCount(optionObj);
+ Tcl_DecrRefCount(valueObj);
break;
}
@@ -3171,15 +3174,15 @@ ForwardProc(
Tcl_Obj *optionObj = Tcl_NewStringObj(paramPtr->getOpt.name, -1);
- Tcl_IncrRefCount(optionObj);
- Tcl_Preserve(rcPtr);
+ Tcl_IncrRefCount(optionObj);
+ Tcl_Preserve(rcPtr);
if (InvokeTclMethod(rcPtr, METH_CGET, optionObj, NULL, &resObj)!=TCL_OK){
ForwardSetObjError(paramPtr, resObj);
} else {
TclDStringAppendObj(paramPtr->getOpt.value, resObj);
}
- Tcl_Release(rcPtr);
- Tcl_DecrRefCount(optionObj);
+ Tcl_Release(rcPtr);
+ Tcl_DecrRefCount(optionObj);
break;
}
@@ -3188,7 +3191,7 @@ ForwardProc(
* Retrieve all options.
*/
- Tcl_Preserve(rcPtr);
+ Tcl_Preserve(rcPtr);
if (InvokeTclMethod(rcPtr, METH_CGETALL, NULL, NULL, &resObj) != TCL_OK){
ForwardSetObjError(paramPtr, resObj);
} else {
@@ -3201,7 +3204,7 @@ ForwardProc(
Tcl_Obj **listv;
if (TclListObjGetElements(interp, resObj, &listc,
- &listv) != TCL_OK) {
+ &listv) != TCL_OK) {
Tcl_DecrRefCount(resObj);
resObj = MarshallError(interp);
ForwardSetObjError(paramPtr, resObj);
@@ -3226,7 +3229,7 @@ ForwardProc(
}
}
}
- Tcl_Release(rcPtr);
+ Tcl_Release(rcPtr);
break;
default: