Attachment "nsChildTable.patch" to
ticket [2694630fff]
added by
dkf
2009-03-19 22:05:20.
0000: 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 Index: generic/t
0010: 63 6c 49 6e 74 2e 68 0a 3d 3d 3d 3d 3d 3d 3d 3d clInt.h.========
0020: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0030: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0040: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0050: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 ===========.RCS
0060: 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 file: /cvsroot/t
0070: 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f 74 cl/tcl/generic/t
0080: 63 6c 49 6e 74 2e 68 2c 76 0a 72 65 74 72 69 65 clInt.h,v.retrie
0090: 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e ving revision 1.
00a0: 34 31 38 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 418.diff -u -r1.
00b0: 34 31 38 20 74 63 6c 49 6e 74 2e 68 0a 2d 2d 2d 418 tclInt.h.---
00c0: 20 67 65 6e 65 72 69 63 2f 74 63 6c 49 6e 74 2e generic/tclInt.
00d0: 68 09 39 20 4d 61 72 20 32 30 30 39 20 30 39 3a h.9 Mar 2009 09:
00e0: 31 32 3a 33 39 20 2d 30 30 30 30 09 31 2e 34 31 12:39 -0000.1.41
00f0: 38 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63 8.+++ generic/tc
0100: 6c 49 6e 74 2e 68 09 31 39 20 4d 61 72 20 32 30 lInt.h.19 Mar 20
0110: 30 39 20 31 34 3a 35 36 3a 34 30 20 2d 30 30 30 09 14:56:40 -000
0120: 30 0a 40 40 20 2d 32 33 36 2c 38 20 2b 32 33 36 0.@@ -236,8 +236
0130: 2c 31 30 20 40 40 0a 20 20 20 20 20 73 74 72 75 ,10 @@. stru
0140: 63 74 20 4e 61 6d 65 73 70 61 63 65 20 2a 70 61 ct Namespace *pa
0150: 72 65 6e 74 50 74 72 3b 2f 2a 20 50 6f 69 6e 74 rentPtr;/* Point
0160: 73 20 74 6f 20 74 68 65 20 6e 61 6d 65 73 70 61 s to the namespa
0170: 63 65 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 ce that contains
0180: 20 74 68 69 73 0a 20 09 09 09 09 20 2a 20 6f 6e this. .... * on
0190: 65 2e 20 4e 55 4c 4c 20 69 66 20 74 68 69 73 20 e. NULL if this
01a0: 69 73 20 74 68 65 20 67 6c 6f 62 61 6c 0a 20 09 is the global. .
01b0: 09 09 09 20 2a 20 6e 61 6d 65 73 70 61 63 65 2e ... * namespace.
01c0: 20 2a 2f 0a 2d 20 20 20 20 54 63 6c 5f 48 61 73 */.- Tcl_Has
01d0: 68 54 61 62 6c 65 20 63 68 69 6c 64 54 61 62 6c hTable childTabl
01e0: 65 3b 09 2f 2a 20 43 6f 6e 74 61 69 6e 73 20 61 e;./* Contains a
01f0: 6e 79 20 63 68 69 6c 64 20 6e 61 6d 65 73 70 61 ny child namespa
0200: 63 65 73 2e 20 49 6e 64 65 78 65 64 20 62 79 0a ces. Indexed by.
0210: 2d 09 09 09 09 20 2a 20 73 74 72 69 6e 67 73 3b -.... * strings;
0220: 20 76 61 6c 75 65 73 20 68 61 76 65 20 74 79 70 values have typ
0230: 65 20 28 4e 61 6d 65 73 70 61 63 65 20 2a 29 2e e (Namespace *).
0240: 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f 48 61 73 */.+ Tcl_Has
0250: 68 54 61 62 6c 65 20 2a 63 68 69 6c 64 54 61 62 hTable *childTab
0260: 6c 65 50 74 72 3b 0a 2b 09 09 09 09 2f 2a 20 43 lePtr;.+..../* C
0270: 6f 6e 74 61 69 6e 73 20 61 6e 79 20 63 68 69 6c ontains any chil
0280: 64 20 6e 61 6d 65 73 70 61 63 65 73 2e 20 49 6e d namespaces. In
0290: 64 65 78 65 64 20 62 79 0a 2b 09 09 09 09 20 2a dexed by.+.... *
02a0: 20 73 74 72 69 6e 67 73 3b 20 76 61 6c 75 65 73 strings; values
02b0: 20 68 61 76 65 20 74 79 70 65 20 28 4e 61 6d 65 have type (Name
02c0: 73 70 61 63 65 20 2a 29 2e 20 49 66 0a 2b 09 09 space *). If.+..
02d0: 09 09 20 2a 20 4e 55 4c 4c 2c 20 74 68 65 72 65 .. * NULL, there
02e0: 20 61 72 65 20 6e 6f 20 63 68 69 6c 64 72 65 6e are no children
02f0: 2e 20 2a 2f 0a 20 20 20 20 20 6c 6f 6e 67 20 6e . */. long n
0300: 73 49 64 3b 09 09 09 2f 2a 20 55 6e 69 71 75 65 sId;.../* Unique
0310: 20 69 64 20 66 6f 72 20 74 68 65 20 6e 61 6d 65 id for the name
0320: 73 70 61 63 65 2e 20 2a 2f 0a 20 20 20 20 20 54 space. */. T
0330: 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 cl_Interp *inter
0340: 70 3b 09 09 2f 2a 20 54 68 65 20 69 6e 74 65 72 p;../* The inter
0350: 70 72 65 74 65 72 20 63 6f 6e 74 61 69 6e 69 6e preter containin
0360: 67 20 74 68 69 73 0a 20 09 09 09 09 20 2a 20 6e g this. .... * n
0370: 61 6d 65 73 70 61 63 65 2e 20 2a 2f 0a 49 6e 64 amespace. */.Ind
0380: 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c 4e ex: generic/tclN
0390: 61 6d 65 73 70 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d amesp.c.========
03a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
03b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
03c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
03d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 ===========.RCS
03e0: 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 file: /cvsroot/t
03f0: 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f 74 cl/tcl/generic/t
0400: 63 6c 4e 61 6d 65 73 70 2e 63 2c 76 0a 72 65 74 clNamesp.c,v.ret
0410: 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e rieving revision
0420: 20 31 2e 31 38 39 0a 64 69 66 66 20 2d 75 20 2d 1.189.diff -u -
0430: 72 31 2e 31 38 39 20 74 63 6c 4e 61 6d 65 73 70 r1.189 tclNamesp
0440: 2e 63 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 .c.--- generic/t
0450: 63 6c 4e 61 6d 65 73 70 2e 63 09 31 30 20 46 65 clNamesp.c.10 Fe
0460: 62 20 32 30 30 39 20 32 32 3a 35 30 3a 30 37 20 b 2009 22:50:07
0470: 2d 30 30 30 30 09 31 2e 31 38 39 0a 2b 2b 2b 20 -0000.1.189.+++
0480: 67 65 6e 65 72 69 63 2f 74 63 6c 4e 61 6d 65 73 generic/tclNames
0490: 70 2e 63 09 31 39 20 4d 61 72 20 32 30 30 39 20 p.c.19 Mar 2009
04a0: 31 34 3a 35 36 3a 34 31 20 2d 30 30 30 30 0a 40 14:56:41 -0000.@
04b0: 40 20 2d 37 39 35 2c 37 20 2b 37 39 35 2c 38 20 @ -795,7 +795,8
04c0: 40 40 0a 20 09 20 2a 20 61 6c 72 65 61 64 79 20 @@. . * already
04d0: 65 78 69 73 74 20 69 6e 20 74 68 65 20 70 61 72 exist in the par
04e0: 65 6e 74 20 6e 61 6d 65 73 70 61 63 65 2e 0a 20 ent namespace..
04f0: 09 20 2a 2f 0a 20 0a 2d 09 69 66 20 28 54 63 6c . */. .-.if (Tcl
0500: 5f 46 69 6e 64 48 61 73 68 45 6e 74 72 79 28 26 _FindHashEntry(&
0510: 70 61 72 65 6e 74 50 74 72 2d 3e 63 68 69 6c 64 parentPtr->child
0520: 54 61 62 6c 65 2c 20 73 69 6d 70 6c 65 4e 61 6d Table, simpleNam
0530: 65 29 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09 e) != NULL) {.+.
0540: 69 66 20 28 70 61 72 65 6e 74 50 74 72 2d 3e 63 if (parentPtr->c
0550: 68 69 6c 64 54 61 62 6c 65 50 74 72 20 21 3d 20 hildTablePtr !=
0560: 4e 55 4c 4c 20 26 26 0a 2b 09 09 54 63 6c 5f 46 NULL &&.+..Tcl_F
0570: 69 6e 64 48 61 73 68 45 6e 74 72 79 28 70 61 72 indHashEntry(par
0580: 65 6e 74 50 74 72 2d 3e 63 68 69 6c 64 54 61 62 entPtr->childTab
0590: 6c 65 50 74 72 2c 73 69 6d 70 6c 65 4e 61 6d 65 lePtr,simpleName
05a0: 29 21 3d 4e 55 4c 4c 29 7b 0a 20 09 20 20 20 20 )!=NULL){. .
05b0: 54 63 6c 5f 41 70 70 65 6e 64 52 65 73 75 6c 74 Tcl_AppendResult
05c0: 28 69 6e 74 65 72 70 2c 20 22 63 61 6e 27 74 20 (interp, "can't
05d0: 63 72 65 61 74 65 20 6e 61 6d 65 73 70 61 63 65 create namespace
05e0: 20 5c 22 22 2c 20 6e 61 6d 65 2c 0a 20 09 09 20 \"", name,. ..
05f0: 20 20 20 22 5c 22 3a 20 61 6c 72 65 61 64 79 20 "\": already
0600: 65 78 69 73 74 73 22 2c 20 4e 55 4c 4c 29 3b 0a exists", NULL);.
0610: 20 09 20 20 20 20 72 65 74 75 72 6e 20 4e 55 4c . return NUL
0620: 4c 3b 0a 40 40 20 2d 38 31 34 2c 37 20 2b 38 31 L;.@@ -814,7 +81
0630: 35 2c 37 20 40 40 0a 20 20 20 20 20 6e 73 50 74 5,7 @@. nsPt
0640: 72 2d 3e 63 6c 69 65 6e 74 44 61 74 61 20 3d 20 r->clientData =
0650: 63 6c 69 65 6e 74 44 61 74 61 3b 0a 20 20 20 20 clientData;.
0660: 20 6e 73 50 74 72 2d 3e 64 65 6c 65 74 65 50 72 nsPtr->deletePr
0670: 6f 63 20 3d 20 64 65 6c 65 74 65 50 72 6f 63 3b oc = deleteProc;
0680: 0a 20 20 20 20 20 6e 73 50 74 72 2d 3e 70 61 72 . nsPtr->par
0690: 65 6e 74 50 74 72 20 3d 20 70 61 72 65 6e 74 50 entPtr = parentP
06a0: 74 72 3b 0a 2d 20 20 20 20 54 63 6c 5f 49 6e 69 tr;.- Tcl_Ini
06b0: 74 48 61 73 68 54 61 62 6c 65 28 26 6e 73 50 74 tHashTable(&nsPt
06c0: 72 2d 3e 63 68 69 6c 64 54 61 62 6c 65 2c 20 54 r->childTable, T
06d0: 43 4c 5f 53 54 52 49 4e 47 5f 4b 45 59 53 29 3b CL_STRING_KEYS);
06e0: 0a 2b 20 20 20 20 6e 73 50 74 72 2d 3e 63 68 69 .+ nsPtr->chi
06f0: 6c 64 54 61 62 6c 65 50 74 72 20 3d 20 4e 55 4c ldTablePtr = NUL
0700: 4c 3b 0a 20 20 20 20 20 6e 73 50 74 72 2d 3e 6e L;. nsPtr->n
0710: 73 49 64 20 3d 20 2b 2b 28 74 73 64 50 74 72 2d sId = ++(tsdPtr-
0720: 3e 6e 75 6d 4e 73 43 72 65 61 74 65 64 29 3b 0a >numNsCreated);.
0730: 20 20 20 20 20 6e 73 50 74 72 2d 3e 69 6e 74 65 nsPtr->inte
0740: 72 70 20 3d 20 69 6e 74 65 72 70 3b 0a 20 20 20 rp = interp;.
0750: 20 20 6e 73 50 74 72 2d 3e 66 6c 61 67 73 20 3d nsPtr->flags =
0760: 20 30 3b 0a 40 40 20 2d 38 33 38 2c 37 20 2b 38 0;.@@ -838,7 +8
0770: 33 39 2c 31 32 20 40 40 0a 20 20 20 20 20 6e 73 39,12 @@. ns
0780: 50 74 72 2d 3e 63 6f 6d 6d 61 6e 64 50 61 74 68 Ptr->commandPath
0790: 53 6f 75 72 63 65 4c 69 73 74 20 3d 20 4e 55 4c SourceList = NUL
07a0: 4c 3b 0a 20 0a 20 20 20 20 20 69 66 20 28 70 61 L;. . if (pa
07b0: 72 65 6e 74 50 74 72 20 21 3d 20 4e 55 4c 4c 29 rentPtr != NULL)
07c0: 20 7b 0a 2d 09 65 6e 74 72 79 50 74 72 20 3d 20 {.-.entryPtr =
07d0: 54 63 6c 5f 43 72 65 61 74 65 48 61 73 68 45 6e Tcl_CreateHashEn
07e0: 74 72 79 28 26 70 61 72 65 6e 74 50 74 72 2d 3e try(&parentPtr->
07f0: 63 68 69 6c 64 54 61 62 6c 65 2c 20 73 69 6d 70 childTable, simp
0800: 6c 65 4e 61 6d 65 2c 0a 2b 09 69 66 20 28 70 61 leName,.+.if (pa
0810: 72 65 6e 74 50 74 72 2d 3e 63 68 69 6c 64 54 61 rentPtr->childTa
0820: 62 6c 65 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 20 blePtr == NULL)
0830: 7b 0a 2b 09 20 20 20 20 70 61 72 65 6e 74 50 74 {.+. parentPt
0840: 72 2d 3e 63 68 69 6c 64 54 61 62 6c 65 50 74 72 r->childTablePtr
0850: 20 3d 20 28 54 63 6c 5f 48 61 73 68 54 61 62 6c = (Tcl_HashTabl
0860: 65 20 2a 29 0a 2b 09 09 20 20 20 20 63 6b 61 6c e *).+.. ckal
0870: 6c 6f 63 28 73 69 7a 65 6f 66 28 54 63 6c 5f 48 loc(sizeof(Tcl_H
0880: 61 73 68 54 61 62 6c 65 29 29 3b 0a 2b 09 20 20 ashTable));.+.
0890: 20 20 54 63 6c 5f 49 6e 69 74 48 61 73 68 54 61 Tcl_InitHashTa
08a0: 62 6c 65 28 70 61 72 65 6e 74 50 74 72 2d 3e 63 ble(parentPtr->c
08b0: 68 69 6c 64 54 61 62 6c 65 50 74 72 2c 20 54 43 hildTablePtr, TC
08c0: 4c 5f 53 54 52 49 4e 47 5f 4b 45 59 53 29 3b 0a L_STRING_KEYS);.
08d0: 2b 09 7d 0a 2b 09 65 6e 74 72 79 50 74 72 20 3d +.}.+.entryPtr =
08e0: 20 54 63 6c 5f 43 72 65 61 74 65 48 61 73 68 45 Tcl_CreateHashE
08f0: 6e 74 72 79 28 70 61 72 65 6e 74 50 74 72 2d 3e ntry(parentPtr->
0900: 63 68 69 6c 64 54 61 62 6c 65 50 74 72 2c 20 73 childTablePtr, s
0910: 69 6d 70 6c 65 4e 61 6d 65 2c 0a 20 09 09 26 6e impleName,. ..&n
0920: 65 77 45 6e 74 72 79 29 3b 0a 20 09 54 63 6c 5f ewEntry);. .Tcl_
0930: 53 65 74 48 61 73 68 56 61 6c 75 65 28 65 6e 74 SetHashValue(ent
0940: 72 79 50 74 72 2c 20 6e 73 50 74 72 29 3b 0a 20 ryPtr, nsPtr);.
0950: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 40 40 20 } else {.@@
0960: 2d 39 39 32 2c 37 20 2b 39 39 38 2c 37 20 40 40 -992,7 +998,7 @@
0970: 0a 20 20 20 20 20 69 66 20 28 6e 73 50 74 72 2d . if (nsPtr-
0980: 3e 61 63 74 69 76 61 74 69 6f 6e 43 6f 75 6e 74 >activationCount
0990: 20 2d 20 28 6e 73 50 74 72 20 3d 3d 20 67 6c 6f - (nsPtr == glo
09a0: 62 61 6c 4e 73 50 74 72 29 20 3e 20 30 29 20 7b balNsPtr) > 0) {
09b0: 0a 20 09 6e 73 50 74 72 2d 3e 66 6c 61 67 73 20 . .nsPtr->flags
09c0: 7c 3d 20 4e 53 5f 44 59 49 4e 47 3b 0a 20 09 69 |= NS_DYING;. .i
09d0: 66 20 28 6e 73 50 74 72 2d 3e 70 61 72 65 6e 74 f (nsPtr->parent
09e0: 50 74 72 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 2d Ptr != NULL) {.-
09f0: 09 20 20 20 20 65 6e 74 72 79 50 74 72 20 3d 20 . entryPtr =
0a00: 54 63 6c 5f 46 69 6e 64 48 61 73 68 45 6e 74 72 Tcl_FindHashEntr
0a10: 79 28 26 6e 73 50 74 72 2d 3e 70 61 72 65 6e 74 y(&nsPtr->parent
0a20: 50 74 72 2d 3e 63 68 69 6c 64 54 61 62 6c 65 2c Ptr->childTable,
0a30: 0a 2b 09 20 20 20 20 65 6e 74 72 79 50 74 72 20 .+. entryPtr
0a40: 3d 20 54 63 6c 5f 46 69 6e 64 48 61 73 68 45 6e = Tcl_FindHashEn
0a50: 74 72 79 28 6e 73 50 74 72 2d 3e 70 61 72 65 6e try(nsPtr->paren
0a60: 74 50 74 72 2d 3e 63 68 69 6c 64 54 61 62 6c 65 tPtr->childTable
0a70: 50 74 72 2c 0a 20 09 09 20 20 20 20 6e 73 50 74 Ptr,. .. nsPt
0a80: 72 2d 3e 6e 61 6d 65 29 3b 0a 20 09 20 20 20 20 r->name);. .
0a90: 69 66 20 28 65 6e 74 72 79 50 74 72 20 21 3d 20 if (entryPtr !=
0aa0: 4e 55 4c 4c 29 20 7b 0a 20 09 09 54 63 6c 5f 44 NULL) {. ..Tcl_D
0ab0: 65 6c 65 74 65 48 61 73 68 45 6e 74 72 79 28 65 eleteHashEntry(e
0ac0: 6e 74 72 79 50 74 72 29 3b 0a 40 40 20 2d 31 30 ntryPtr);.@@ -10
0ad0: 32 32 2c 37 20 2b 31 30 32 38 2c 31 30 20 40 40 22,7 +1028,10 @@
0ae0: 0a 20 0a 20 09 20 20 20 20 54 63 6c 44 65 6c 65 . . . TclDele
0af0: 74 65 4e 61 6d 65 73 70 61 63 65 56 61 72 73 28 teNamespaceVars(
0b00: 6e 73 50 74 72 29 3b 0a 20 0a 2d 09 20 20 20 20 nsPtr);. .-.
0b10: 54 63 6c 5f 44 65 6c 65 74 65 48 61 73 68 54 61 Tcl_DeleteHashTa
0b20: 62 6c 65 28 26 6e 73 50 74 72 2d 3e 63 68 69 6c ble(&nsPtr->chil
0b30: 64 54 61 62 6c 65 29 3b 0a 2b 09 20 20 20 20 69 dTable);.+. i
0b40: 66 20 28 6e 73 50 74 72 2d 3e 63 68 69 6c 64 54 f (nsPtr->childT
0b50: 61 62 6c 65 50 74 72 20 21 3d 20 4e 55 4c 4c 29 ablePtr != NULL)
0b60: 20 7b 0a 2b 09 09 54 63 6c 5f 44 65 6c 65 74 65 {.+..Tcl_Delete
0b70: 48 61 73 68 54 61 62 6c 65 28 6e 73 50 74 72 2d HashTable(nsPtr-
0b80: 3e 63 68 69 6c 64 54 61 62 6c 65 50 74 72 29 3b >childTablePtr);
0b90: 0a 2b 09 09 63 6b 66 72 65 65 28 28 63 68 61 72 .+..ckfree((char
0ba0: 20 2a 29 20 6e 73 50 74 72 2d 3e 63 68 69 6c 64 *) nsPtr->child
0bb0: 54 61 62 6c 65 50 74 72 29 3b 0a 2b 09 20 20 20 TablePtr);.+.
0bc0: 20 7d 0a 20 09 20 20 20 20 54 63 6c 5f 44 65 6c }. . Tcl_Del
0bd0: 65 74 65 48 61 73 68 54 61 62 6c 65 28 26 6e 73 eteHashTable(&ns
0be0: 50 74 72 2d 3e 63 6d 64 54 61 62 6c 65 29 3b 0a Ptr->cmdTable);.
0bf0: 20 0a 20 09 20 20 20 20 2f 2a 0a 40 40 20 2d 31 . . /*.@@ -1
0c00: 31 31 38 2c 37 20 2b 31 31 32 37 2c 37 20 40 40 118,7 +1127,7 @@
0c10: 0a 20 20 20 20 20 20 2a 2f 0a 20 0a 20 20 20 20 . */. .
0c20: 20 69 66 20 28 6e 73 50 74 72 2d 3e 70 61 72 65 if (nsPtr->pare
0c30: 6e 74 50 74 72 20 21 3d 20 4e 55 4c 4c 29 20 7b ntPtr != NULL) {
0c40: 0a 2d 09 65 6e 74 72 79 50 74 72 20 3d 20 54 63 .-.entryPtr = Tc
0c50: 6c 5f 46 69 6e 64 48 61 73 68 45 6e 74 72 79 28 l_FindHashEntry(
0c60: 26 6e 73 50 74 72 2d 3e 70 61 72 65 6e 74 50 74 &nsPtr->parentPt
0c70: 72 2d 3e 63 68 69 6c 64 54 61 62 6c 65 2c 0a 2b r->childTable,.+
0c80: 09 65 6e 74 72 79 50 74 72 20 3d 20 54 63 6c 5f .entryPtr = Tcl_
0c90: 46 69 6e 64 48 61 73 68 45 6e 74 72 79 28 6e 73 FindHashEntry(ns
0ca0: 50 74 72 2d 3e 70 61 72 65 6e 74 50 74 72 2d 3e Ptr->parentPtr->
0cb0: 63 68 69 6c 64 54 61 62 6c 65 50 74 72 2c 0a 20 childTablePtr,.
0cc0: 09 09 6e 73 50 74 72 2d 3e 6e 61 6d 65 29 3b 0a ..nsPtr->name);.
0cd0: 20 09 69 66 20 28 65 6e 74 72 79 50 74 72 20 21 .if (entryPtr !
0ce0: 3d 20 4e 55 4c 4c 29 20 7b 0a 20 09 20 20 20 20 = NULL) {. .
0cf0: 54 63 6c 5f 44 65 6c 65 74 65 48 61 73 68 45 6e Tcl_DeleteHashEn
0d00: 74 72 79 28 65 6e 74 72 79 50 74 72 29 3b 0a 40 try(entryPtr);.@
0d10: 40 20 2d 31 31 35 36 2c 31 31 20 2b 31 31 36 35 @ -1156,11 +1165
0d20: 2c 31 33 20 40 40 0a 20 20 20 20 20 20 2a 20 44 ,13 @@. * D
0d30: 6f 6e 27 74 20 6f 70 74 69 6d 69 7a 65 20 74 6f on't optimize to
0d40: 20 54 63 6c 5f 4e 65 78 74 48 61 73 68 45 6e 74 Tcl_NextHashEnt
0d50: 72 79 28 29 20 62 65 63 61 75 73 65 20 6f 66 20 ry() because of
0d60: 74 72 61 63 65 73 2e 0a 20 20 20 20 20 20 2a 2f traces.. */
0d70: 0a 20 0a 2d 20 20 20 20 66 6f 72 20 28 65 6e 74 . .- for (ent
0d80: 72 79 50 74 72 20 3d 20 54 63 6c 5f 46 69 72 73 ryPtr = Tcl_Firs
0d90: 74 48 61 73 68 45 6e 74 72 79 28 26 6e 73 50 74 tHashEntry(&nsPt
0da0: 72 2d 3e 63 68 69 6c 64 54 61 62 6c 65 2c 20 26 r->childTable, &
0db0: 73 65 61 72 63 68 29 3b 0a 2d 09 20 20 20 20 65 search);.-. e
0dc0: 6e 74 72 79 50 74 72 20 21 3d 20 4e 55 4c 4c 3b ntryPtr != NULL;
0dd0: 0a 2d 09 20 20 20 20 65 6e 74 72 79 50 74 72 20 .-. entryPtr
0de0: 3d 20 54 63 6c 5f 46 69 72 73 74 48 61 73 68 45 = Tcl_FirstHashE
0df0: 6e 74 72 79 28 26 6e 73 50 74 72 2d 3e 63 68 69 ntry(&nsPtr->chi
0e00: 6c 64 54 61 62 6c 65 2c 20 26 73 65 61 72 63 68 ldTable, &search
0e10: 29 29 20 7b 0a 2d 09 63 68 69 6c 64 4e 73 50 74 )) {.-.childNsPt
0e20: 72 20 3d 20 54 63 6c 5f 47 65 74 48 61 73 68 56 r = Tcl_GetHashV
0e30: 61 6c 75 65 28 65 6e 74 72 79 50 74 72 29 3b 0a alue(entryPtr);.
0e40: 2d 09 54 63 6c 5f 44 65 6c 65 74 65 4e 61 6d 65 -.Tcl_DeleteName
0e50: 73 70 61 63 65 28 63 68 69 6c 64 4e 73 50 74 72 space(childNsPtr
0e60: 29 3b 0a 2b 20 20 20 20 69 66 20 28 6e 73 50 74 );.+ if (nsPt
0e70: 72 2d 3e 63 68 69 6c 64 54 61 62 6c 65 50 74 72 r->childTablePtr
0e80: 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09 66 6f != NULL) {.+.fo
0e90: 72 20 28 65 6e 74 72 79 50 74 72 20 3d 20 54 63 r (entryPtr = Tc
0ea0: 6c 5f 46 69 72 73 74 48 61 73 68 45 6e 74 72 79 l_FirstHashEntry
0eb0: 28 6e 73 50 74 72 2d 3e 63 68 69 6c 64 54 61 62 (nsPtr->childTab
0ec0: 6c 65 50 74 72 2c 20 26 73 65 61 72 63 68 29 3b lePtr, &search);
0ed0: 0a 2b 09 09 65 6e 74 72 79 50 74 72 20 21 3d 20 .+..entryPtr !=
0ee0: 4e 55 4c 4c 3b 0a 2b 09 09 65 6e 74 72 79 50 74 NULL;.+..entryPt
0ef0: 72 20 3d 20 54 63 6c 5f 46 69 72 73 74 48 61 73 r = Tcl_FirstHas
0f00: 68 45 6e 74 72 79 28 6e 73 50 74 72 2d 3e 63 68 hEntry(nsPtr->ch
0f10: 69 6c 64 54 61 62 6c 65 50 74 72 2c 26 73 65 61 ildTablePtr,&sea
0f20: 72 63 68 29 29 20 7b 0a 2b 09 20 20 20 20 63 68 rch)) {.+. ch
0f30: 69 6c 64 4e 73 50 74 72 20 3d 20 54 63 6c 5f 47 ildNsPtr = Tcl_G
0f40: 65 74 48 61 73 68 56 61 6c 75 65 28 65 6e 74 72 etHashValue(entr
0f50: 79 50 74 72 29 3b 0a 2b 09 20 20 20 20 54 63 6c yPtr);.+. Tcl
0f60: 5f 44 65 6c 65 74 65 4e 61 6d 65 73 70 61 63 65 _DeleteNamespace
0f70: 28 63 68 69 6c 64 4e 73 50 74 72 29 3b 0a 2b 09 (childNsPtr);.+.
0f80: 7d 0a 20 20 20 20 20 7d 0a 20 0a 20 20 20 20 20 }. }. .
0f90: 2f 2a 0a 40 40 20 2d 32 32 31 38 2c 37 20 2b 32 /*.@@ -2218,7 +2
0fa0: 32 32 39 2c 31 31 20 40 40 0a 20 09 20 2a 2f 0a 229,11 @@. . */.
0fb0: 20 0a 20 09 69 66 20 28 6e 73 50 74 72 20 21 3d . .if (nsPtr !=
0fc0: 20 4e 55 4c 4c 29 20 7b 0a 2d 09 20 20 20 20 65 NULL) {.-. e
0fd0: 6e 74 72 79 50 74 72 20 3d 20 54 63 6c 5f 46 69 ntryPtr = Tcl_Fi
0fe0: 6e 64 48 61 73 68 45 6e 74 72 79 28 26 6e 73 50 ndHashEntry(&nsP
0ff0: 74 72 2d 3e 63 68 69 6c 64 54 61 62 6c 65 2c 20 tr->childTable,
1000: 6e 73 4e 61 6d 65 29 3b 0a 2b 09 20 20 20 20 69 nsName);.+. i
1010: 66 20 28 6e 73 50 74 72 2d 3e 63 68 69 6c 64 54 f (nsPtr->childT
1020: 61 62 6c 65 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 ablePtr == NULL)
1030: 20 7b 0a 2b 09 09 65 6e 74 72 79 50 74 72 20 3d {.+..entryPtr =
1040: 20 4e 55 4c 4c 3b 0a 2b 09 20 20 20 20 7d 20 65 NULL;.+. } e
1050: 6c 73 65 20 7b 0a 2b 09 09 65 6e 74 72 79 50 74 lse {.+..entryPt
1060: 72 20 3d 20 54 63 6c 5f 46 69 6e 64 48 61 73 68 r = Tcl_FindHash
1070: 45 6e 74 72 79 28 6e 73 50 74 72 2d 3e 63 68 69 Entry(nsPtr->chi
1080: 6c 64 54 61 62 6c 65 50 74 72 2c 20 6e 73 4e 61 ldTablePtr, nsNa
1090: 6d 65 29 3b 0a 2b 09 20 20 20 20 7d 0a 20 09 20 me);.+. }. .
10a0: 20 20 20 69 66 20 28 65 6e 74 72 79 50 74 72 20 if (entryPtr
10b0: 21 3d 20 4e 55 4c 4c 29 20 7b 0a 20 09 09 6e 73 != NULL) {. ..ns
10c0: 50 74 72 20 3d 20 54 63 6c 5f 47 65 74 48 61 73 Ptr = Tcl_GetHas
10d0: 68 56 61 6c 75 65 28 65 6e 74 72 79 50 74 72 29 hValue(entryPtr)
10e0: 3b 0a 20 09 20 20 20 20 7d 20 65 6c 73 65 20 69 ;. . } else i
10f0: 66 20 28 66 6c 61 67 73 20 26 20 54 43 4c 5f 43 f (flags & TCL_C
1100: 52 45 41 54 45 5f 4e 53 5f 49 46 5f 55 4e 4b 4e REATE_NS_IF_UNKN
1110: 4f 57 4e 29 20 7b 0a 40 40 20 2d 32 32 32 37 2c OWN) {.@@ -2227,
1120: 38 20 2b 32 32 34 32 2c 38 20 40 40 0a 20 09 09 8 +2242,8 @@. ..
1130: 28 76 6f 69 64 29 20 54 63 6c 50 75 73 68 53 74 (void) TclPushSt
1140: 61 63 6b 46 72 61 6d 65 28 69 6e 74 65 72 70 2c ackFrame(interp,
1150: 20 26 66 72 61 6d 65 50 74 72 2c 0a 20 09 09 09 &framePtr,. ...
1160: 28 54 63 6c 5f 4e 61 6d 65 73 70 61 63 65 20 2a (Tcl_Namespace *
1170: 29 20 6e 73 50 74 72 2c 20 2f 2a 69 73 50 72 6f ) nsPtr, /*isPro
1180: 63 43 61 6c 6c 46 72 61 6d 65 2a 2f 20 30 29 3b cCallFrame*/ 0);
1190: 0a 20 0a 2d 09 09 6e 73 50 74 72 20 3d 20 28 4e . .-..nsPtr = (N
11a0: 61 6d 65 73 70 61 63 65 20 2a 29 20 54 63 6c 5f amespace *) Tcl_
11b0: 43 72 65 61 74 65 4e 61 6d 65 73 70 61 63 65 28 CreateNamespace(
11c0: 69 6e 74 65 72 70 2c 20 6e 73 4e 61 6d 65 2c 0a interp, nsName,.
11d0: 2d 09 09 09 4e 55 4c 4c 2c 20 4e 55 4c 4c 29 3b -...NULL, NULL);
11e0: 0a 2b 09 09 6e 73 50 74 72 20 3d 20 28 4e 61 6d .+..nsPtr = (Nam
11f0: 65 73 70 61 63 65 20 2a 29 0a 2b 09 09 09 54 63 espace *).+...Tc
1200: 6c 5f 43 72 65 61 74 65 4e 61 6d 65 73 70 61 63 l_CreateNamespac
1210: 65 28 69 6e 74 65 72 70 2c 20 6e 73 4e 61 6d 65 e(interp, nsName
1220: 2c 20 4e 55 4c 4c 2c 20 4e 55 4c 4c 29 3b 0a 20 , NULL, NULL);.
1230: 09 09 54 63 6c 50 6f 70 53 74 61 63 6b 46 72 61 ..TclPopStackFra
1240: 6d 65 28 69 6e 74 65 72 70 29 3b 0a 20 0a 20 09 me(interp);. . .
1250: 09 69 66 20 28 6e 73 50 74 72 20 3d 3d 20 4e 55 .if (nsPtr == NU
1260: 4c 4c 29 20 7b 0a 40 40 20 2d 32 32 34 35 2c 37 LL) {.@@ -2245,7
1270: 20 2b 32 32 36 30 2c 31 31 20 40 40 0a 20 09 20 +2260,11 @@. .
1280: 2a 2f 0a 20 0a 20 09 69 66 20 28 61 6c 74 4e 73 */. . .if (altNs
1290: 50 74 72 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 2d Ptr != NULL) {.-
12a0: 09 20 20 20 20 65 6e 74 72 79 50 74 72 20 3d 20 . entryPtr =
12b0: 54 63 6c 5f 46 69 6e 64 48 61 73 68 45 6e 74 72 Tcl_FindHashEntr
12c0: 79 28 26 61 6c 74 4e 73 50 74 72 2d 3e 63 68 69 y(&altNsPtr->chi
12d0: 6c 64 54 61 62 6c 65 2c 20 6e 73 4e 61 6d 65 29 ldTable, nsName)
12e0: 3b 0a 2b 09 20 20 20 20 69 66 20 28 61 6c 74 4e ;.+. if (altN
12f0: 73 50 74 72 2d 3e 63 68 69 6c 64 54 61 62 6c 65 sPtr->childTable
1300: 50 74 72 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 2b Ptr != NULL) {.+
1310: 09 09 65 6e 74 72 79 50 74 72 20 3d 20 54 63 6c ..entryPtr = Tcl
1320: 5f 46 69 6e 64 48 61 73 68 45 6e 74 72 79 28 61 _FindHashEntry(a
1330: 6c 74 4e 73 50 74 72 2d 3e 63 68 69 6c 64 54 61 ltNsPtr->childTa
1340: 62 6c 65 50 74 72 2c 20 6e 73 4e 61 6d 65 29 3b blePtr, nsName);
1350: 0a 2b 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a .+. } else {.
1360: 2b 09 09 65 6e 74 72 79 50 74 72 20 3d 20 4e 55 +..entryPtr = NU
1370: 4c 4c 3b 0a 2b 09 20 20 20 20 7d 0a 20 09 20 20 LL;.+. }. .
1380: 20 20 69 66 20 28 65 6e 74 72 79 50 74 72 20 21 if (entryPtr !
1390: 3d 20 4e 55 4c 4c 29 20 7b 0a 20 09 09 61 6c 74 = NULL) {. ..alt
13a0: 4e 73 50 74 72 20 3d 20 54 63 6c 5f 47 65 74 48 NsPtr = Tcl_GetH
13b0: 61 73 68 56 61 6c 75 65 28 65 6e 74 72 79 50 74 ashValue(entryPt
13c0: 72 29 3b 0a 20 09 20 20 20 20 7d 20 65 6c 73 65 r);. . } else
13d0: 20 7b 0a 40 40 20 2d 32 36 32 35 2c 38 20 2b 32 {.@@ -2625,8 +2
13e0: 36 34 34 2c 31 32 20 40 40 0a 20 0a 20 09 66 6f 644,12 @@. . .fo
13f0: 72 20 28 69 20 3d 20 74 72 61 69 6c 46 72 6f 6e r (i = trailFron
1400: 74 3b 20 20 69 20 3e 3d 20 30 3b 20 20 69 2d 2d t; i >= 0; i--
1410: 29 20 7b 0a 20 09 20 20 20 20 74 72 61 69 6c 4e ) {. . trailN
1420: 73 50 74 72 20 3d 20 74 72 61 69 6c 50 74 72 5b sPtr = trailPtr[
1430: 69 5d 3b 0a 2d 09 20 20 20 20 68 50 74 72 20 3d i];.-. hPtr =
1440: 20 54 63 6c 5f 46 69 6e 64 48 61 73 68 45 6e 74 Tcl_FindHashEnt
1450: 72 79 28 26 73 68 61 64 6f 77 4e 73 50 74 72 2d ry(&shadowNsPtr-
1460: 3e 63 68 69 6c 64 54 61 62 6c 65 2c 0a 2d 09 09 >childTable,.-..
1470: 20 20 20 20 74 72 61 69 6c 4e 73 50 74 72 2d 3e trailNsPtr->
1480: 6e 61 6d 65 29 3b 0a 2b 09 20 20 20 20 69 66 20 name);.+. if
1490: 28 73 68 61 64 6f 77 4e 73 50 74 72 2d 3e 63 68 (shadowNsPtr->ch
14a0: 69 6c 64 54 61 62 6c 65 50 74 72 20 21 3d 20 4e ildTablePtr != N
14b0: 55 4c 4c 29 20 7b 0a 2b 09 09 68 50 74 72 20 3d ULL) {.+..hPtr =
14c0: 20 54 63 6c 5f 46 69 6e 64 48 61 73 68 45 6e 74 Tcl_FindHashEnt
14d0: 72 79 28 73 68 61 64 6f 77 4e 73 50 74 72 2d 3e ry(shadowNsPtr->
14e0: 63 68 69 6c 64 54 61 62 6c 65 50 74 72 2c 0a 2b childTablePtr,.+
14f0: 09 09 09 74 72 61 69 6c 4e 73 50 74 72 2d 3e 6e ...trailNsPtr->n
1500: 61 6d 65 29 3b 0a 2b 09 20 20 20 20 7d 20 65 6c ame);.+. } el
1510: 73 65 20 7b 0a 2b 09 09 68 50 74 72 20 3d 20 4e se {.+..hPtr = N
1520: 55 4c 4c 3b 0a 2b 09 20 20 20 20 7d 0a 20 09 20 ULL;.+. }. .
1530: 20 20 20 69 66 20 28 68 50 74 72 20 21 3d 20 4e if (hPtr != N
1540: 55 4c 4c 29 20 7b 0a 20 09 09 73 68 61 64 6f 77 ULL) {. ..shadow
1550: 4e 73 50 74 72 20 3d 20 54 63 6c 5f 47 65 74 48 NsPtr = Tcl_GetH
1560: 61 73 68 56 61 6c 75 65 28 68 50 74 72 29 3b 0a ashValue(hPtr);.
1570: 20 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 40 . } else {.@
1580: 40 20 2d 32 39 39 36 2c 31 33 20 2b 33 30 31 39 @ -2996,13 +3019
1590: 2c 31 37 20 40 40 0a 20 09 69 66 20 28 73 74 72 ,17 @@. .if (str
15a0: 6e 63 6d 70 28 70 61 74 74 65 72 6e 2c 20 6e 73 ncmp(pattern, ns
15b0: 50 74 72 2d 3e 66 75 6c 6c 4e 61 6d 65 2c 20 6c Ptr->fullName, l
15c0: 65 6e 67 74 68 29 20 21 3d 20 30 29 20 7b 0a 20 ength) != 0) {.
15d0: 09 20 20 20 20 67 6f 74 6f 20 73 65 61 72 63 68 . goto search
15e0: 44 6f 6e 65 3b 0a 20 09 7d 0a 2d 09 69 66 20 28 Done;. .}.-.if (
15f0: 54 63 6c 5f 46 69 6e 64 48 61 73 68 45 6e 74 72 Tcl_FindHashEntr
1600: 79 28 26 6e 73 50 74 72 2d 3e 63 68 69 6c 64 54 y(&nsPtr->childT
1610: 61 62 6c 65 2c 20 70 61 74 74 65 72 6e 2b 6c 65 able, pattern+le
1620: 6e 67 74 68 29 20 21 3d 20 4e 55 4c 4c 29 20 7b ngth) != NULL) {
1630: 0a 2b 09 69 66 20 28 6e 73 50 74 72 2d 3e 63 68 .+.if (nsPtr->ch
1640: 69 6c 64 54 61 62 6c 65 50 74 72 20 21 3d 20 4e ildTablePtr != N
1650: 55 4c 4c 20 26 26 0a 2b 09 09 54 63 6c 5f 46 69 ULL &&.+..Tcl_Fi
1660: 6e 64 48 61 73 68 45 6e 74 72 79 28 6e 73 50 74 ndHashEntry(nsPt
1670: 72 2d 3e 63 68 69 6c 64 54 61 62 6c 65 50 74 72 r->childTablePtr
1680: 2c 70 61 74 74 65 72 6e 2b 6c 65 6e 67 74 68 29 ,pattern+length)
1690: 21 3d 4e 55 4c 4c 29 7b 0a 20 09 20 20 20 20 54 !=NULL){. . T
16a0: 63 6c 5f 4c 69 73 74 4f 62 6a 41 70 70 65 6e 64 cl_ListObjAppend
16b0: 45 6c 65 6d 65 6e 74 28 69 6e 74 65 72 70 2c 20 Element(interp,
16c0: 6c 69 73 74 50 74 72 2c 0a 20 09 09 20 20 20 20 listPtr,. ..
16d0: 54 63 6c 5f 4e 65 77 53 74 72 69 6e 67 4f 62 6a Tcl_NewStringObj
16e0: 28 70 61 74 74 65 72 6e 2c 20 2d 31 29 29 3b 0a (pattern, -1));.
16f0: 20 09 7d 0a 20 09 67 6f 74 6f 20 73 65 61 72 63 .}. .goto searc
1700: 68 44 6f 6e 65 3b 0a 20 20 20 20 20 7d 0a 2d 20 hDone;. }.-
1710: 20 20 20 65 6e 74 72 79 50 74 72 20 3d 20 54 63 entryPtr = Tc
1720: 6c 5f 46 69 72 73 74 48 61 73 68 45 6e 74 72 79 l_FirstHashEntry
1730: 28 26 6e 73 50 74 72 2d 3e 63 68 69 6c 64 54 61 (&nsPtr->childTa
1740: 62 6c 65 2c 20 26 73 65 61 72 63 68 29 3b 0a 2b ble, &search);.+
1750: 20 20 20 20 69 66 20 28 6e 73 50 74 72 2d 3e 63 if (nsPtr->c
1760: 68 69 6c 64 54 61 62 6c 65 50 74 72 20 3d 3d 20 hildTablePtr ==
1770: 4e 55 4c 4c 29 20 7b 0a 2b 09 67 6f 74 6f 20 73 NULL) {.+.goto s
1780: 65 61 72 63 68 44 6f 6e 65 3b 0a 2b 20 20 20 20 earchDone;.+
1790: 7d 0a 2b 20 20 20 20 65 6e 74 72 79 50 74 72 20 }.+ entryPtr
17a0: 3d 20 54 63 6c 5f 46 69 72 73 74 48 61 73 68 45 = Tcl_FirstHashE
17b0: 6e 74 72 79 28 6e 73 50 74 72 2d 3e 63 68 69 6c ntry(nsPtr->chil
17c0: 64 54 61 62 6c 65 50 74 72 2c 20 26 73 65 61 72 dTablePtr, &sear
17d0: 63 68 29 3b 0a 20 20 20 20 20 77 68 69 6c 65 20 ch);. while
17e0: 28 65 6e 74 72 79 50 74 72 20 21 3d 20 4e 55 4c (entryPtr != NUL
17f0: 4c 29 20 7b 0a 20 09 63 68 69 6c 64 4e 73 50 74 L) {. .childNsPt
1800: 72 20 3d 20 54 63 6c 5f 47 65 74 48 61 73 68 56 r = Tcl_GetHashV
1810: 61 6c 75 65 28 65 6e 74 72 79 50 74 72 29 3b 0a alue(entryPtr);.
1820: 20 09 69 66 20 28 28 70 61 74 74 65 72 6e 20 3d .if ((pattern =
1830: 3d 20 4e 55 4c 4c 29 0a 49 6e 64 65 78 3a 20 67 = NULL).Index: g
1840: 65 6e 65 72 69 63 2f 74 63 6c 52 65 73 6f 6c 76 eneric/tclResolv
1850: 65 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d e.c.============
1860: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1870: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1880: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1890: 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 =======.RCS file
18a0: 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 : /cvsroot/tcl/t
18b0: 63 6c 2f 67 65 6e 65 72 69 63 2f 74 63 6c 52 65 cl/generic/tclRe
18c0: 73 6f 6c 76 65 2e 63 2c 76 0a 72 65 74 72 69 65 solve.c,v.retrie
18d0: 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e ving revision 1.
18e0: 31 30 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 31 10.diff -u -r1.1
18f0: 30 20 74 63 6c 52 65 73 6f 6c 76 65 2e 63 0a 2d 0 tclResolve.c.-
1900: 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63 6c 52 65 -- generic/tclRe
1910: 73 6f 6c 76 65 2e 63 09 32 37 20 41 70 72 20 32 solve.c.27 Apr 2
1920: 30 30 38 20 32 32 3a 32 31 3a 33 32 20 2d 30 30 008 22:21:32 -00
1930: 30 30 09 31 2e 31 30 0a 2b 2b 2b 20 67 65 6e 65 00.1.10.+++ gene
1940: 72 69 63 2f 74 63 6c 52 65 73 6f 6c 76 65 2e 63 ric/tclResolve.c
1950: 09 31 39 20 4d 61 72 20 32 30 30 39 20 31 34 3a .19 Mar 2009 14:
1960: 35 36 3a 34 31 20 2d 30 30 30 30 0a 40 40 20 2d 56:41 -0000.@@ -
1970: 32 36 32 2c 31 31 20 2b 32 36 32 2c 31 33 20 40 262,11 +262,13 @
1980: 40 0a 20 0a 20 20 20 20 20 6e 73 50 74 72 2d 3e @. . nsPtr->
1990: 63 6d 64 52 65 66 45 70 6f 63 68 2b 2b 3b 0a 20 cmdRefEpoch++;.
19a0: 0a 2d 20 20 20 20 66 6f 72 20 28 65 6e 74 72 79 .- for (entry
19b0: 20 3d 20 54 63 6c 5f 46 69 72 73 74 48 61 73 68 = Tcl_FirstHash
19c0: 45 6e 74 72 79 28 26 6e 73 50 74 72 2d 3e 63 68 Entry(&nsPtr->ch
19d0: 69 6c 64 54 61 62 6c 65 2c 20 26 73 65 61 72 63 ildTable, &searc
19e0: 68 29 3b 0a 2d 09 20 20 20 20 65 6e 74 72 79 20 h);.-. entry
19f0: 21 3d 20 4e 55 4c 4c 3b 20 65 6e 74 72 79 20 3d != NULL; entry =
1a00: 20 54 63 6c 5f 4e 65 78 74 48 61 73 68 45 6e 74 Tcl_NextHashEnt
1a10: 72 79 28 26 73 65 61 72 63 68 29 29 20 7b 0a 2d ry(&search)) {.-
1a20: 09 4e 61 6d 65 73 70 61 63 65 20 2a 63 68 69 6c .Namespace *chil
1a30: 64 4e 73 50 74 72 20 3d 20 54 63 6c 5f 47 65 74 dNsPtr = Tcl_Get
1a40: 48 61 73 68 56 61 6c 75 65 28 65 6e 74 72 79 29 HashValue(entry)
1a50: 3b 0a 2b 20 20 20 20 69 66 20 28 6e 73 50 74 72 ;.+ if (nsPtr
1a60: 2d 3e 63 68 69 6c 64 54 61 62 6c 65 50 74 72 20 ->childTablePtr
1a70: 21 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09 66 6f 72 != NULL) {.+.for
1a80: 20 28 65 6e 74 72 79 20 3d 20 54 63 6c 5f 46 69 (entry = Tcl_Fi
1a90: 72 73 74 48 61 73 68 45 6e 74 72 79 28 6e 73 50 rstHashEntry(nsP
1aa0: 74 72 2d 3e 63 68 69 6c 64 54 61 62 6c 65 50 74 tr->childTablePt
1ab0: 72 2c 20 26 73 65 61 72 63 68 29 3b 0a 2b 09 09 r, &search);.+..
1ac0: 65 6e 74 72 79 20 21 3d 20 4e 55 4c 4c 3b 20 65 entry != NULL; e
1ad0: 6e 74 72 79 20 3d 20 54 63 6c 5f 4e 65 78 74 48 ntry = Tcl_NextH
1ae0: 61 73 68 45 6e 74 72 79 28 26 73 65 61 72 63 68 ashEntry(&search
1af0: 29 29 20 7b 0a 2b 09 20 20 20 20 4e 61 6d 65 73 )) {.+. Names
1b00: 70 61 63 65 20 2a 63 68 69 6c 64 4e 73 50 74 72 pace *childNsPtr
1b10: 20 3d 20 54 63 6c 5f 47 65 74 48 61 73 68 56 61 = Tcl_GetHashVa
1b20: 6c 75 65 28 65 6e 74 72 79 29 3b 0a 20 0a 2d 09 lue(entry);. .-.
1b30: 42 75 6d 70 43 6d 64 52 65 66 45 70 6f 63 68 73 BumpCmdRefEpochs
1b40: 28 63 68 69 6c 64 4e 73 50 74 72 29 3b 0a 2b 09 (childNsPtr);.+.
1b50: 20 20 20 20 42 75 6d 70 43 6d 64 52 65 66 45 70 BumpCmdRefEp
1b60: 6f 63 68 73 28 63 68 69 6c 64 4e 73 50 74 72 29 ochs(childNsPtr)
1b70: 3b 0a 2b 09 7d 0a 20 20 20 20 20 7d 0a 20 20 20 ;.+.}. }.
1b80: 20 20 54 63 6c 49 6e 76 61 6c 69 64 61 74 65 4e TclInvalidateN
1b90: 73 50 61 74 68 28 6e 73 50 74 72 29 3b 0a 20 7d sPath(nsPtr);. }
1ba0: 0a 49 6e 64 65 78 3a 20 70 6b 67 73 2f 69 74 63 .Index: pkgs/itc
1bb0: 6c 2f 67 65 6e 65 72 69 63 2f 69 74 63 6c 4d 69 l/generic/itclMi
1bc0: 67 72 61 74 65 32 54 63 6c 43 6f 72 65 2e 63 0a grate2TclCore.c.
1bd0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1be0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1bf0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1c00: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1c10: 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 ===.RCS file: /c
1c20: 76 73 72 6f 6f 74 2f 74 63 6c 2f 69 74 63 6c 2f vsroot/tcl/itcl/
1c30: 67 65 6e 65 72 69 63 2f 69 74 63 6c 4d 69 67 72 generic/itclMigr
1c40: 61 74 65 32 54 63 6c 43 6f 72 65 2e 63 2c 76 0a ate2TclCore.c,v.
1c50: 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 retrieving revis
1c60: 69 6f 6e 20 31 2e 31 2e 31 2e 34 0a 64 69 66 66 ion 1.1.1.4.diff
1c70: 20 2d 75 20 2d 72 31 2e 31 2e 31 2e 34 20 69 74 -u -r1.1.1.4 it
1c80: 63 6c 4d 69 67 72 61 74 65 32 54 63 6c 43 6f 72 clMigrate2TclCor
1c90: 65 2e 63 0a 2d 2d 2d 20 70 6b 67 73 2f 69 74 63 e.c.--- pkgs/itc
1ca0: 6c 2f 67 65 6e 65 72 69 63 2f 69 74 63 6c 4d 69 l/generic/itclMi
1cb0: 67 72 61 74 65 32 54 63 6c 43 6f 72 65 2e 63 09 grate2TclCore.c.
1cc0: 33 20 46 65 62 20 32 30 30 39 20 32 30 3a 33 35 3 Feb 2009 20:35
1cd0: 3a 30 30 20 2d 30 30 30 30 09 31 2e 31 2e 31 2e :00 -0000.1.1.1.
1ce0: 34 0a 2b 2b 2b 20 70 6b 67 73 2f 69 74 63 6c 2f 4.+++ pkgs/itcl/
1cf0: 67 65 6e 65 72 69 63 2f 69 74 63 6c 4d 69 67 72 generic/itclMigr
1d00: 61 74 65 32 54 63 6c 43 6f 72 65 2e 63 09 31 39 ate2TclCore.c.19
1d10: 20 4d 61 72 20 32 30 30 39 20 31 34 3a 35 36 3a Mar 2009 14:56:
1d20: 34 31 20 2d 30 30 30 30 0a 40 40 20 2d 34 37 2c 41 -0000.@@ -47,
1d30: 37 20 2b 34 37 2c 31 32 20 40 40 0a 20 5f 54 63 7 +47,12 @@. _Tc
1d40: 6c 5f 47 65 74 4e 61 6d 65 73 70 61 63 65 43 68 l_GetNamespaceCh
1d50: 69 6c 64 54 61 62 6c 65 28 0a 20 20 20 20 20 54 ildTable(. T
1d60: 63 6c 5f 4e 61 6d 65 73 70 61 63 65 20 2a 6e 73 cl_Namespace *ns
1d70: 50 74 72 29 0a 20 7b 0a 2d 20 20 20 20 72 65 74 Ptr). {.- ret
1d80: 75 72 6e 20 26 28 28 4e 61 6d 65 73 70 61 63 65 urn &((Namespace
1d90: 20 2a 29 6e 73 50 74 72 29 2d 3e 63 68 69 6c 64 *)nsPtr)->child
1da0: 54 61 62 6c 65 3b 0a 2b 20 20 20 20 4e 61 6d 65 Table;.+ Name
1db0: 73 70 61 63 65 20 2a 6e 50 74 72 20 3d 20 28 4e space *nPtr = (N
1dc0: 61 6d 65 73 70 61 63 65 20 2a 29 20 6e 73 50 74 amespace *) nsPt
1dd0: 72 3b 0a 2b 20 20 20 20 69 66 20 28 6e 50 74 72 r;.+ if (nPtr
1de0: 2d 3e 63 68 69 6c 64 54 61 62 6c 65 50 74 72 20 ->childTablePtr
1df0: 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09 6e 50 74 == NULL) {.+.nPt
1e00: 72 2d 3e 63 68 69 6c 64 54 61 62 6c 65 50 74 72 r->childTablePtr
1e10: 20 3d 20 28 54 63 6c 5f 48 61 73 68 54 61 62 6c = (Tcl_HashTabl
1e20: 65 2a 29 20 63 6b 61 6c 6c 6f 63 28 73 69 7a 65 e*) ckalloc(size
1e30: 6f 66 28 54 63 6c 5f 48 61 73 68 54 61 62 6c 65 of(Tcl_HashTable
1e40: 29 29 3b 0a 2b 09 54 63 6c 5f 49 6e 69 74 48 61 ));.+.Tcl_InitHa
1e50: 73 68 54 61 62 6c 65 28 6e 50 74 72 2d 3e 63 68 shTable(nPtr->ch
1e60: 69 6c 64 54 61 62 6c 65 50 74 72 2c 20 54 43 4c ildTablePtr, TCL
1e70: 5f 53 54 52 49 4e 47 5f 4b 45 59 53 29 3b 0a 2b _STRING_KEYS);.+
1e80: 20 20 20 20 7d 0a 2b 20 20 20 20 72 65 74 75 72 }.+ retur
1e90: 6e 20 6e 50 74 72 2d 3e 63 68 69 6c 64 54 61 62 n nPtr->childTab
1ea0: 6c 65 50 74 72 3b 0a 20 7d 0a 20 0a 20 69 6e 74 lePtr;. }. . int
1eb0: 0a .