rem: if (itPtr == NULL) {
add: if (itPtr->servPtr == NULL) {
context: NsTclInfoObjCmd(ClientData arg, Tcl_Interp *interp, int objc, Tcl_Obj **objv){    NsInterp *itPtr = arg;    char *elog;    Tcl_DString ds;    static CONST char *opts[] = {	"address", "argv0", "boottime", "builddate", "callbacks",	"config", "home", "hostname", "label", "locks", "log",	"major", "minor", "name", "nsd", "pageroot", "patchlevel",	"pid", "platform", "pools", "scheduled", "server", "servers",	"sockcallbacks", "tag", "tcllib", "threads", "uptime",	"version", "winnt", NULL    };    enum {	IAddressIdx, IArgv0Idx, IBoottimeIdx, IBuilddateIdx, ICallbacksIdx,	IConfigIdx, IHomeIdx, hostINameIdx, ILabelIdx, ILocksIdx, ILogIdx,	IMajorIdx, IMinorIdx, INameIdx, INsdIdx, IPageRootIdx, IPatchLevelIdx,	IPidIdx, IPlatformIdx, IPoolsIdx, IScheduledIdx, IServerIdx, IServersIdx,	sockICallbacksIdx, ITagIdx, ITclLibIdx, IThreadsIdx, IUptimeIdx,	IVersionIdx, IWinntIdx,    } opt;    if (objc != 2) {	Tcl_WrongNumArgs(interp, 1, objv, "option");        return TCL_ERROR;    }    if (Tcl_GetIndexFromObj(interp, objv[1], opts, "option", 0,			    (int *) &opt) != TCL_OK) {	return TCL_ERROR;    }    Tcl_DStringInit(&ds);    switch (opt) {    case IArgv0Idx:	Tcl_SetResult(interp, nsconf.argv0, TCL_STATIC);	break;    case INsdIdx:	Tcl_SetResult(interp, nsconf.nsd, TCL_STATIC);	break;    case INameIdx:        Tcl_SetResult(interp, Ns_InfoServerName(), TCL_STATIC);	break;    case IConfigIdx:	Tcl_SetResult(interp, Ns_InfoConfigFile(), TCL_STATIC);	break;    case ICallbacksIdx:    	NsGetCallbacks(&ds);	Tcl_DStringResult(interp, &ds);	break;    case sockICallbacksIdx:    	NsGetSockCallbacks(&ds);	Tcl_DStringResult(interp, &ds);	break;    case IScheduledIdx:    	NsGetScheduled(&ds);	Tcl_DStringResult(interp, &ds);	break;    case ILocksIdx:	Ns_MutexList(&ds);	Tcl_DStringResult(interp, &ds);	break;    case IThreadsIdx:	Ns_ThreadList(&ds, ThreadArgProc);	Tcl_DStringResult(interp, &ds);	break;    case IPoolsIdx:	Tcl_GetMemoryInfo(&ds);	Tcl_DStringResult(interp, &ds);	break;    case ILogIdx:        elog = Ns_InfoErrorLog();	Tcl_SetResult(interp, elog == NULL ? "STDOUT" : elog, TCL_STATIC);	break;    case IPlatformIdx:	Tcl_SetResult(interp, Ns_InfoPlatform(), TCL_STATIC);	break;    case hostINameIdx:	Tcl_SetResult(interp, Ns_InfoHostname(), TCL_STATIC);	break;    case IAddressIdx:	Tcl_SetResult(interp, Ns_InfoAddress(), TCL_STATIC);	break;    case IUptimeIdx:	Tcl_SetObjResult(interp, Tcl_NewIntObj(Ns_InfoUptime()));	break;    case IBoottimeIdx:	Tcl_SetObjResult(interp, Tcl_NewIntObj(Ns_InfoBootTime()));	break;    case IPidIdx:	Tcl_SetObjResult(interp, Tcl_NewIntObj(Ns_InfoPid()));	break;    case IMajorIdx:	Tcl_SetObjResult(interp, Tcl_NewIntObj(NS_MAJOR_VERSION));	break;    case IMinorIdx:	Tcl_SetObjResult(interp, Tcl_NewIntObj(NS_MINOR_VERSION));	break;    case IVersionIdx:	Tcl_SetResult(interp, NS_VERSION, TCL_STATIC);	break;    case IPatchLevelIdx:	Tcl_SetResult(interp, NS_PATCH_LEVEL, TCL_STATIC);	break;    case IHomeIdx:	Tcl_SetResult(interp, Ns_InfoHomePath(), TCL_STATIC);	break;    case IWinntIdx:	Tcl_SetResult(interp, "0", TCL_STATIC);	break;    case ILabelIdx:	Tcl_SetResult(interp, Ns_InfoLabel(), TCL_STATIC);	break;    case IBuilddateIdx:	Tcl_SetResult(interp, Ns_InfoBuildDate(), TCL_STATIC);	break;    case ITagIdx:	Tcl_SetResult(interp, Ns_InfoTag(), TCL_STATIC);	break;    case IServersIdx:	Tcl_SetResult(interp, nsconf.servers.string, TCL_STATIC);	break;    case ITclLibIdx:    case IPageRootIdx:    case IServerIdx:	if (itPtr == NULL) {	    Tcl_SetResult(interp, "no server", TCL_STATIC);	    return TCL_ERROR;	}	if (opt == IServerIdx) {            Tcl_SetResult(interp, itPtr->servPtr->server, TCL_STATIC);	} else if (opt == ITclLibIdx) {	    Tcl_SetResult(interp, itPtr->servPtr->tcl.library, TCL_STATIC);	} else {	    Tcl_SetResult(interp, itPtr->servPtr->fastpath.pageroot, TCL_STATIC);	}    }    return TCL_OK;}