Index: generic/nsf.c =================================================================== diff -u -r2d4492a6bceacd7df7ef0a305ca78b42128da5ca -rd9214c77fc394b8a36f334d02432547a3904dea8 --- generic/nsf.c (.../nsf.c) (revision 2d4492a6bceacd7df7ef0a305ca78b42128da5ca) +++ generic/nsf.c (.../nsf.c) (revision d9214c77fc394b8a36f334d02432547a3904dea8) @@ -5540,9 +5540,8 @@ */ static void CmdListFree(NsfCmdList **cmdList, NsfFreeCmdListClientData *freeFct) { - NsfCmdList *del; while (*cmdList) { - del = *cmdList; + NsfCmdList *del = *cmdList; *cmdList = (*cmdList)->nextPtr; CmdListDeleteCmdListEntry(del, freeFct); } @@ -5628,9 +5627,8 @@ */ static void TclObjListFreeList(NsfTclObjList *list) { - NsfTclObjList *del; while (list) { - del = list; + NsfTclObjList *del = list; list = list->nextPtr; DECR_REF_COUNT2("listContent", del->content); if (del->payload) {DECR_REF_COUNT2("listContent", del->payload);} @@ -6618,9 +6616,9 @@ if (startCl->opt) { NsfCmdList *m; - NsfClass *cl; for (m = startCl->opt->isClassMixinOf; m; m = m->nextPtr) { + NsfClass *cl; /* we should have no deleted commands in the list */ assert((Tcl_Command_flags(m->cmdPtr) & CMD_IS_DELETED) == 0); @@ -6642,9 +6640,9 @@ */ if (startCl->opt) { NsfCmdList *m; - NsfObject *object; for (m = startCl->opt->isObjectMixinOf; m; m = m->nextPtr) { + NsfObject *object; /* we should have no deleted commands in the list */ assert((Tcl_Command_flags(m->cmdPtr) & CMD_IS_DELETED) == 0); @@ -7067,14 +7065,15 @@ NsfClasses *clPtr; Tcl_HashSearch hSrch; Tcl_HashEntry *hPtr; - Tcl_HashTable objTable, *commandTable = &objTable, *instanceTablePtr; + Tcl_HashTable objTable, *commandTable = &objTable; /* * Iterate over the subclass hierarchy. */ for (clPtr = subClasses; clPtr; clPtr = clPtr->nextPtr) { Tcl_HashSearch hSrch; Tcl_HashEntry *hPtr; + Tcl_HashTable *instanceTablePtr; /* * Reset mixin order for all objects having this class as per object mixin @@ -7430,15 +7429,16 @@ MixinInfo(Tcl_Interp *interp, NsfCmdList *m, CONST char *pattern, int withGuards, NsfObject *matchObject) { Tcl_Obj *list = Tcl_NewListObj(0, NULL); - NsfClass *mixinClass; /*fprintf(stderr, " mixin info m=%p, pattern %s, matchObject %p\n", m, pattern, matchObject);*/ while (m) { + NsfClass *mixinClass = NsfGetClassFromCmdPtr(m->cmdPtr); + /* fprintf(stderr, " mixin info m=%p, next=%p, pattern %s, matchObject %p\n", m, m->next, pattern, matchObject);*/ - mixinClass = NsfGetClassFromCmdPtr(m->cmdPtr); + if (mixinClass && (!pattern || (matchObject && &(mixinClass->object) == matchObject) @@ -7703,9 +7703,8 @@ } if (object->flags & NSF_MIXIN_ORDER_DEFINED_AND_VALID) { NsfCmdList *ml; - NsfClass *mixin; for (ml = object->mixinOrder; ml && !guardAdded; ml = ml->nextPtr) { - mixin = NsfGetClassFromCmdPtr(ml->cmdPtr); + NsfClass *mixin = NsfGetClassFromCmdPtr(ml->cmdPtr); if (mixin && mixin->opt) { guardAdded = GuardAddFromDefinitionList(dest, filterCmd, mixin->opt->classFilters); @@ -7920,15 +7919,14 @@ static void FilterSearchAgain(Tcl_Interp *interp, NsfCmdList **filters, NsfObject *startingObject, NsfClass *startingClass) { - char *simpleName; - Tcl_Command cmd; NsfCmdList *cmdList, *del; NsfClass *cl = NULL; CmdListRemoveDeleted(filters, GuardDel); for (cmdList = *filters; cmdList; ) { - simpleName = (char *) Tcl_GetCommandName(interp, cmdList->cmdPtr); - cmd = FilterSearch(simpleName, startingObject, startingClass, &cl); + char *simpleName = (char *) Tcl_GetCommandName(interp, cmdList->cmdPtr); + Tcl_Command cmd = FilterSearch(simpleName, startingObject, startingClass, &cl); + if (cmd == NULL) { del = CmdListRemoveFromList(filters, cmdList); cmdList = cmdList->nextPtr; @@ -8053,7 +8051,6 @@ static int FilterInfo(Tcl_Interp *interp, NsfCmdList *f, CONST char *pattern, int withGuards, int withMethodHandles) { - CONST char *simpleName; Tcl_Obj *list = Tcl_NewListObj(0, NULL); /*fprintf(stderr, "FilterInfo %p %s %d %d\n", pattern, pattern, @@ -8067,11 +8064,13 @@ } while (f) { - simpleName = Tcl_GetCommandName(interp, f->cmdPtr); + CONST char *simpleName = Tcl_GetCommandName(interp, f->cmdPtr); + if (!pattern || Tcl_StringMatch(simpleName, pattern)) { if (withGuards && f->clientData) { Tcl_Obj *innerList = Tcl_NewListObj(0, NULL); Tcl_Obj *g = (Tcl_Obj *) f->clientData; + Tcl_ListObjAppendElement(interp, innerList, Tcl_NewStringObj(simpleName, -1)); Tcl_ListObjAppendElement(interp, innerList, NsfGlobalObjs[NSF_GUARD_OPTION]); @@ -8080,6 +8079,7 @@ } else { if (withMethodHandles) { NsfClass *filterClass = f->clorobj; + Tcl_ListObjAppendElement(interp, list, MethodHandleObj((NsfObject *)filterClass, !NsfObjectIsClass(&filterClass->object), simpleName)); @@ -8102,7 +8102,6 @@ FilterComputeOrderFullList(Tcl_Interp *interp, NsfCmdList **filters, NsfCmdList **filterList) { NsfCmdList *f ; - char *simpleName; NsfClass *fcl; NsfClasses *pl; @@ -8112,7 +8111,7 @@ CmdListRemoveDeleted(filters, GuardDel); for (f = *filters; f; f = f->nextPtr) { - simpleName = (char *) Tcl_GetCommandName(interp, f->cmdPtr); + char *simpleName = (char *) Tcl_GetCommandName(interp, f->cmdPtr); fcl = f->clorobj; CmdListAdd(filterList, f->cmdPtr, fcl, /*noDuplicates*/ 0, 1); @@ -14539,12 +14538,13 @@ Tcl_HashSearch search; Tcl_HashEntry *entryPtr = Tcl_FirstHashEntry(Tcl_Namespace_childTablePtr(nsPtr), &search); Tcl_Var *varPtr; - int result; varPtr = (Tcl_Var *) Tcl_FindNamespaceVar(interp, name, nsPtr, 0); /*fprintf(stderr, "found %s in %s -> %p\n", name, nsPtr->fullName, varPtr);*/ if (varPtr) { Tcl_DString dFullname, *dsPtr = &dFullname; + int result; + Tcl_DStringInit(dsPtr); Tcl_DStringAppend(dsPtr, "unset ", -1); DStringAppendQualName(dsPtr, nsPtr, name); @@ -18587,12 +18587,12 @@ Tcl_HashSearch hSrch; Tcl_HashTable *cmdTablePtr = Tcl_Namespace_cmdTablePtr(object->nsPtr); Tcl_HashEntry *hPtr; - char *key; for (hPtr = Tcl_FirstHashEntry(cmdTablePtr, &hSrch); hPtr; hPtr = Tcl_NextHashEntry(&hSrch)) { - key = Tcl_GetHashKey(cmdTablePtr, hPtr); + char *key = Tcl_GetHashKey(cmdTablePtr, hPtr); + if (!pattern || Tcl_StringMatch(key, pattern)) { Tcl_Command cmd = (Tcl_Command)Tcl_GetHashValue(hPtr); @@ -23800,10 +23800,11 @@ } if (object->flags & NSF_MIXIN_ORDER_DEFINED_AND_VALID) { NsfCmdList *ml; - NsfClass *mixin; + for (ml = object->mixinOrder; ml; ml = ml->nextPtr) { int guardOk = TCL_OK; - mixin = NsfGetClassFromCmdPtr(ml->cmdPtr); + NsfClass *mixin = NsfGetClassFromCmdPtr(ml->cmdPtr); + assert(mixin); if (withIncontext) { if (!RUNTIME_STATE(interp)->guardCount) { @@ -24759,7 +24760,6 @@ Tcl_HashTable *cmdTablePtr, *childTablePtr; register Tcl_HashEntry *entryPtr; Tcl_HashSearch search; - Tcl_Command cmd; if (nsPtr == NULL) { nsPtr = Tcl_GetGlobalNamespace(interp); @@ -24774,7 +24774,8 @@ for (entryPtr = Tcl_FirstHashEntry(cmdTablePtr, &search); entryPtr; entryPtr = Tcl_NextHashEntry(&search)) { - cmd = (Tcl_Command)Tcl_GetHashValue(entryPtr); + Tcl_Command cmd = (Tcl_Command)Tcl_GetHashValue(entryPtr); + if (Tcl_Command_objProc(cmd) == NsfProcStub) { /*fprintf(stderr, "cmdname = %s cmd %p\n", Tcl_GetHashKey(cmdTablePtr, entryPtr), cmd);*/ Index: library/mongodb/nsfmongo.c =================================================================== diff -u -ra77464d1f7a06117c621560ec519dc4d387ed5df -rd9214c77fc394b8a36f334d02432547a3904dea8 --- library/mongodb/nsfmongo.c (.../nsfmongo.c) (revision a77464d1f7a06117c621560ec519dc4d387ed5df) +++ library/mongodb/nsfmongo.c (.../nsfmongo.c) (revision d9214c77fc394b8a36f334d02432547a3904dea8) @@ -132,7 +132,7 @@ Tcl_Obj * BsonToList(Tcl_Interp *interp, const char *data , int depth) { bson_iterator i; - const char *key, *tag; + const char *tag; char oidhex[25]; Tcl_Obj *resultObj, *elemObj; @@ -141,6 +141,7 @@ while ( bson_iterator_next( &i ) ){ bson_type t = bson_iterator_type( &i ); + const char *key; if ( t == 0 ) break; @@ -455,13 +456,12 @@ NsfMongoConnect(Tcl_Interp *interp, CONST char *replicaSet, Tcl_Obj *server, int withTimeout) { char channelName[80], *buffer = NULL; mongo_host_port host_port; - int result, objc = 0; + int status, objc = 0; mongo *connPtr; - int status; Tcl_Obj **objv; if (server) { - result = Tcl_ListObjGetElements(interp, server, &objc, &objv); + int result = Tcl_ListObjGetElements(interp, server, &objc, &objv); if (result != TCL_OK) { return NsfPrintError(interp, "The provided servers are not a well-formed list"); } @@ -670,7 +670,7 @@ */ static int NsfMongoInsert(Tcl_Interp *interp, mongo *connPtr, CONST char *namespace, Tcl_Obj *valuesObj) { int i, objc, result; - Tcl_Obj **objv, *resultObj; + Tcl_Obj **objv; bson b[1]; result = Tcl_ListObjGetElements(interp, valuesObj, &objc, &objv); @@ -697,7 +697,7 @@ if (result == MONGO_ERROR) { result = NsfPrintError(interp, ErrorMsg(connPtr->err)); } else { - resultObj = BsonToList(interp, b->data, 0); + Tcl_Obj *resultObj = BsonToList(interp, b->data, 0); Tcl_SetObjResult(interp, resultObj); result = TCL_OK; } @@ -856,7 +856,6 @@ int withTailable, int withAwaitdata) { int objc1, objc2, result, options = 0; Tcl_Obj **objv1, **objv2; - char buffer[80]; mongo_cursor *cursor; bson query[1]; bson atts[1]; @@ -893,6 +892,7 @@ cursor = mongo_find( connPtr, namespace, query, atts, withLimit, withSkip, options); if (cursor) { + char buffer[80]; Nsf_PointerAdd(interp, buffer, "mongo_cursor", cursor); Tcl_SetObjResult(interp, Tcl_NewStringObj(buffer, -1)); } else { @@ -1095,14 +1095,14 @@ */ static int NsfMongoGridFileOpen(Tcl_Interp *interp, gridfs *gridfsPtr, CONST char *filename) { - char buffer[80]; gridfile* gridFilePtr; int result; gridFilePtr = (gridfile *)ckalloc(sizeof(gridfile)); result = gridfs_find_filename(gridfsPtr, filename, gridFilePtr); if (result == MONGO_OK) { + char buffer[80]; Nsf_PointerAdd(interp, buffer, "gridfile", gridFilePtr); Tcl_SetObjResult(interp, Tcl_NewStringObj(buffer, -1)); } else { Index: library/xotcl/tests/xocomm.test =================================================================== diff -u -r45e24b34c85bf0fc3e14db5250550100bd07ff31 -rd9214c77fc394b8a36f334d02432547a3904dea8 --- library/xotcl/tests/xocomm.test (.../xocomm.test) (revision 45e24b34c85bf0fc3e14db5250550100bd07ff31) +++ library/xotcl/tests/xocomm.test (.../xocomm.test) (revision d9214c77fc394b8a36f334d02432547a3904dea8) @@ -66,13 +66,13 @@ # \tstatus-code: \[\[r0 set token\] set responseCode\]" #}}} -nx::test new -msg "Trying to load image logo-100.jpg ... " -count 1 \ +nx::test new -msg "Trying to load image logo-100.jpg ... " \ -verbose 1 \ -pre "puts starting..." \ -setResult {expr {[r0::sink set contentLength] == 1706}} \ -cmd [list SimpleRequest r0 -url http://$hostport/logo-100.jpg] \ -nx::test new -msg "Trying to PUT a file on web-server ... " -count 1 \ +nx::test new -msg "Trying to PUT a file on web-server ... " \ -setResult {expr [[r0 set token] set responseCode] == 201} \ -pre [list file delete -force $dir/../doc/junk.junk] \ -cmd [list SimpleRequest r0 \ @@ -81,24 +81,24 @@ -data "this is a test\n" \ -contentType plain/text] -nx::test new -msg "And download it again ... " -count 1 \ +nx::test new -msg "And download it again ... " \ -setResult {expr [r0 getContentLength] == 15} \ -post {file delete -force ../doc/junk.junk} \ -cmd [list SimpleRequest r0 -url http://$hostport/junk.junk] -nx::test new -msg "Get protected resource ... " -count 1 \ +nx::test new -msg "Get protected resource ... " \ -setResult {expr [r0 getContentLength] > 500} \ -cmd [list SimpleRequest r0 -url http://$protectedhostport/ ] -#nx::test new -msg "Try an FTP request $ftpURL ... " -count 1 \ +#nx::test new -msg "Try an FTP request $ftpURL ... " \ -setResult {expr [r0 getContentLength] > 100} \ -cmd [list SimpleRequest r0 -url $ftpURL] -#nx::test new -msg "Try timeout with slow URL $slowURL ... " -count 1 \ +#nx::test new -msg "Try timeout with slow URL $slowURL ... " \ -setResult {expr {[[r0 set token] set errormsg] == {timeout exceeded}}} \ -cmd [list SimpleRequest r0 -url $slowURL -timeout 100] -nx::test new -msg terminate -count 1 \ +nx::test new -msg terminate \ -setResult {set x 1} \ -cmd [list SimpleRequest r0 -url http://$protectedhostport/exit] \ -post {set ::forever 1} Index: win/nmakehlp.c =================================================================== diff -u -rc7abd01585e06664f9925485f2c1a5d6a2dbdabb -rd9214c77fc394b8a36f334d02432547a3904dea8 --- win/nmakehlp.c (.../nmakehlp.c) (revision c7abd01585e06664f9925485f2c1a5d6a2dbdabb) +++ win/nmakehlp.c (.../nmakehlp.c) (revision d9214c77fc394b8a36f334d02432547a3904dea8) @@ -482,12 +482,12 @@ const char *match, int numdots) { - size_t cbBuffer = 100; static char szBuffer[100]; char *szResult = NULL; FILE *fp = fopen(filename, "rt"); if (fp != NULL) { + size_t cbBuffer = 100; /* * Read data until we see our match string. */ @@ -558,9 +558,11 @@ static void list_free(list_item_t **listPtrPtr) { - list_item_t *tmpPtr, *listPtr = *listPtrPtr; + list_item_t *listPtr = *listPtrPtr; + while (listPtr) { - tmpPtr = listPtr; + list_item_t *tmpPtr = listPtr; + listPtr = listPtr->nextPtr; free(tmpPtr->key); free(tmpPtr->value); @@ -590,31 +592,32 @@ const char *substitutions, const char *filename) { - size_t cbBuffer = 1024; static char szBuffer[1024], szCopy[1024]; - char *szResult = NULL; list_item_t *substPtr = NULL; - FILE *fp, *sp; + FILE *fp; fp = fopen(filename, "rt"); if (fp != NULL) { + FILE *sp; /* * Build a list of substutitions from the first filename */ sp = fopen(substitutions, "rt"); if (sp != NULL) { + size_t cbBuffer = 1024; + while (fgets(szBuffer, cbBuffer, sp) != NULL) { char *ks, *ke, *vs, *ve; ks = szBuffer; - while (ks && *ks && isspace(*ks)) ++ks; + while (*ks && isspace(*ks)) ++ks; ke = ks; - while (ke && *ke && !isspace(*ke)) ++ke; + while (*ke && !isspace(*ke)) ++ke; vs = ke; - while (vs && *vs && isspace(*vs)) ++vs; + while (*vs && isspace(*vs)) ++vs; ve = vs; - while (ve && *ve && !(*ve == '\r' || *ve == '\n')) ++ve; + while (*ve && !(*ve == '\r' || *ve == '\n')) ++ve; *ke = 0, *ve = 0; list_insert(&substPtr, ks, vs); } @@ -657,8 +660,9 @@ } list_free(&substPtr); + fclose(fp); } - fclose(fp); + return 0; }