rem: if (objc < 5) {
add: if (objc < 5 || (timeout.sec == 0 && timeout.usec == 0)) {
context: NsTclCondObjCmd(ClientData data, Tcl_Interp *interp, int objc,		Tcl_Obj **objv){    Tcl_Obj *objPtr;    Ns_Cond *condPtr;    Ns_Mutex *lock;    Ns_Time   timeout;    int       result;    static CONST char *opts[] = {	"abswait", "broadcast", "create", "destroy", "set",	"signal", "timedwait", "wait", NULL    };    enum {	EAbsWaitIdx, EBroadcastIdx, ECreateIdx, EDestroyIdx, ESetIdx,	ESignalIdx, ETimedWaitIdx, EWaitIdx    } opt;    if (!GetArgs(interp, objc, objv, opts, 'e', ECreateIdx,		  (int *) &opt, (void **) &condPtr)) {	return TCL_ERROR;    }    switch (opt) {    case ECreateIdx:	Ns_CondInit(condPtr);	break;    case EAbsWaitIdx:    case ETimedWaitIdx:    case EWaitIdx:        if (objc < 4) {	    Tcl_WrongNumArgs(interp, 2, objv, "condId mutexId ?timeout?");            return TCL_ERROR;        }	if (GetAddr(interp, 'm', Tcl_GetString(objv[3]), (void **) &lock) != TCL_OK) {            return TCL_ERROR;        }        if (objc < 5) {            timeout.sec = timeout.usec = 0;        } else if (Ns_TclGetTimeFromObj(interp, objv[4], &timeout) != TCL_OK) {            return TCL_ERROR;        }	if (opt == EAbsWaitIdx) {            result = Ns_CondTimedWait(condPtr, lock, &timeout);	} else if (opt == ETimedWaitIdx) {	    Ns_Event *eventPtr = (Ns_Event *) condPtr;            result = Ns_TimedWaitForEvent(eventPtr, lock, timeout.sec);	} else {	    if (objc < 5) {		Ns_CondWait(condPtr, lock);		result = NS_OK;	    } else {		Ns_Time abstime;		Ns_GetTime(&abstime);		Ns_IncrTime(&abstime, timeout.sec, timeout.usec);		result = Ns_CondTimedWait(condPtr, lock, &abstime);	    }	}	if (result == NS_OK) {	    objPtr = Tcl_NewBooleanObj(1);	} else if (result == NS_TIMEOUT) {	    objPtr = Tcl_NewBooleanObj(0);	} else {            return TCL_ERROR;        }	Tcl_SetObjResult(interp, objPtr);	break;    case EBroadcastIdx:	Ns_CondBroadcast(condPtr);	break;    case ESetIdx:    case ESignalIdx:	Ns_CondSignal(condPtr);	break;    case EDestroyIdx:	Ns_CondDestroy(condPtr);        ns_free(condPtr);	break;    }    return TCL_OK;}