Tcl Source Code

Hex Artifact Content
Login

Artifact dd9f2deaf075af6adb413fba7fc0fef194da2d3b:

Attachment "1338280.patch" to ticket [1338280fff] added by dgp 2005-11-01 02:25:10.
0000: 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74  Index: generic/t
0010: 63 6c 4e 61 6d 65 73 70 2e 63 0a 3d 3d 3d 3d 3d  clNamesp.c.=====
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 3d 3d 3d 0a 52  ==============.R
0060: 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f  CS file: /cvsroo
0070: 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69  t/tcl/tcl/generi
0080: 63 2f 74 63 6c 4e 61 6d 65 73 70 2e 63 2c 76 0a  c/tclNamesp.c,v.
0090: 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73  retrieving revis
00a0: 69 6f 6e 20 31 2e 38 34 0a 64 69 66 66 20 2d 75  ion 1.84.diff -u
00b0: 20 2d 72 31 2e 38 34 20 74 63 6c 4e 61 6d 65 73   -r1.84 tclNames
00c0: 70 2e 63 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 2f  p.c.--- generic/
00d0: 74 63 6c 4e 61 6d 65 73 70 2e 63 09 31 34 20 53  tclNamesp.c.14 S
00e0: 65 70 20 32 30 30 35 20 31 38 3a 33 35 3a 35 36  ep 2005 18:35:56
00f0: 20 2d 30 30 30 30 09 31 2e 38 34 0a 2b 2b 2b 20   -0000.1.84.+++ 
0100: 67 65 6e 65 72 69 63 2f 74 63 6c 4e 61 6d 65 73  generic/tclNames
0110: 70 2e 63 09 33 31 20 4f 63 74 20 32 30 30 35 20  p.c.31 Oct 2005 
0120: 31 39 3a 31 37 3a 30 37 20 2d 30 30 30 30 0a 40  19:17:07 -0000.@
0130: 40 20 2d 31 30 31 39 2c 31 35 20 2b 31 30 31 39  @ -1019,15 +1019
0140: 2c 36 20 40 40 0a 20 20 20 20 20 69 6e 74 20 69  ,6 @@.     int i
0150: 3b 0a 20 0a 20 20 20 20 20 2f 2a 0a 2d 20 20 20  ;. .     /*.-   
0160: 20 20 2a 20 53 74 61 72 74 20 62 79 20 64 65 73    * Start by des
0170: 74 72 6f 79 69 6e 67 20 74 68 65 20 6e 61 6d 65  troying the name
0180: 73 70 61 63 65 27 73 20 76 61 72 69 61 62 6c 65  space's variable
0190: 20 74 61 62 6c 65 2c 20 73 69 6e 63 65 20 76 61   table, since va
01a0: 72 69 61 62 6c 65 73 0a 2d 20 20 20 20 20 2a 20  riables.-     * 
01b0: 6d 69 67 68 74 20 74 72 69 67 67 65 72 20 74 72  might trigger tr
01c0: 61 63 65 73 2e 20 56 61 72 69 61 62 6c 65 20 74  aces. Variable t
01d0: 61 62 6c 65 20 73 68 6f 75 6c 64 20 62 65 20 63  able should be c
01e0: 6c 65 61 72 65 64 20 62 75 74 20 6e 6f 74 20 66  leared but not f
01f0: 72 65 65 64 21 0a 2d 20 20 20 20 20 2a 20 54 63  reed!.-     * Tc
0200: 6c 44 65 6c 65 74 65 56 61 72 73 20 66 72 65 65  lDeleteVars free
0210: 73 20 69 74 2c 20 73 6f 20 77 65 20 72 65 69 6e  s it, so we rein
0220: 69 74 69 61 6c 69 7a 65 20 69 74 20 61 66 74 65  itialize it afte
0230: 72 77 61 72 64 73 2e 0a 2d 20 20 20 20 20 2a 2f  rwards..-     */
0240: 0a 2d 0a 2d 20 20 20 20 54 63 6c 44 65 6c 65 74  .-.-    TclDelet
0250: 65 56 61 72 73 28 69 50 74 72 2c 20 26 6e 73 50  eVars(iPtr, &nsP
0260: 74 72 2d 3e 76 61 72 54 61 62 6c 65 29 3b 0a 2d  tr->varTable);.-
0270: 20 20 20 20 54 63 6c 5f 49 6e 69 74 48 61 73 68      Tcl_InitHash
0280: 54 61 62 6c 65 28 26 6e 73 50 74 72 2d 3e 76 61  Table(&nsPtr->va
0290: 72 54 61 62 6c 65 2c 20 54 43 4c 5f 53 54 52 49  rTable, TCL_STRI
02a0: 4e 47 5f 4b 45 59 53 29 3b 0a 2d 0a 2d 20 20 20  NG_KEYS);.-.-   
02b0: 20 2f 2a 0a 20 20 20 20 20 20 2a 20 44 65 6c 65   /*.      * Dele
02c0: 74 65 20 61 6c 6c 20 63 6f 6d 6d 61 6e 64 73 20  te all commands 
02d0: 69 6e 20 74 68 69 73 20 6e 61 6d 65 73 70 61 63  in this namespac
02e0: 65 2e 20 42 65 20 63 61 72 65 66 75 6c 20 77 68  e. Be careful wh
02f0: 65 6e 20 74 72 61 76 65 72 73 69 6e 67 20 74 68  en traversing th
0300: 65 0a 20 20 20 20 20 20 2a 20 68 61 73 68 20 74  e.      * hash t
0310: 61 62 6c 65 3a 20 77 68 65 6e 20 65 61 63 68 20  able: when each 
0320: 63 6f 6d 6d 61 6e 64 20 69 73 20 64 65 6c 65 74  command is delet
0330: 65 64 2c 20 69 74 20 72 65 6d 6f 76 65 73 20 69  ed, it removes i
0340: 74 73 65 6c 66 20 66 72 6f 6d 20 74 68 65 0a 20  tself from the. 
0350: 20 20 20 20 20 2a 20 63 6f 6d 6d 61 6e 64 20 74       * command t
0360: 61 62 6c 65 2e 0a 40 40 20 2d 31 30 35 38 2c 36  able..@@ -1058,6
0370: 20 2b 31 30 34 39 2c 31 35 20 40 40 0a 20 20 20   +1049,15 @@.   
0380: 20 20 6e 73 50 74 72 2d 3e 70 61 72 65 6e 74 50    nsPtr->parentP
0390: 74 72 20 3d 20 4e 55 4c 4c 3b 0a 20 0a 20 20 20  tr = NULL;. .   
03a0: 20 20 2f 2a 0a 2b 20 20 20 20 20 2a 20 44 65 73    /*.+     * Des
03b0: 74 72 6f 79 20 74 68 65 20 6e 61 6d 65 73 70 61  troy the namespa
03c0: 63 65 27 73 20 76 61 72 69 61 62 6c 65 20 74 61  ce's variable ta
03d0: 62 6c 65 0a 2b 20 20 20 20 20 2a 20 56 61 72 69  ble.+     * Vari
03e0: 61 62 6c 65 20 74 61 62 6c 65 20 73 68 6f 75 6c  able table shoul
03f0: 64 20 62 65 20 63 6c 65 61 72 65 64 20 62 75 74  d be cleared but
0400: 20 6e 6f 74 20 66 72 65 65 64 21 0a 2b 20 20 20   not freed!.+   
0410: 20 20 2a 20 54 63 6c 44 65 6c 65 74 65 56 61 72    * TclDeleteVar
0420: 73 20 66 72 65 65 73 20 69 74 2c 20 73 6f 20 77  s frees it, so w
0430: 65 20 72 65 69 6e 69 74 69 61 6c 69 7a 65 20 69  e reinitialize i
0440: 74 20 61 66 74 65 72 77 61 72 64 73 2e 0a 2b 20  t afterwards..+ 
0450: 20 20 20 20 2a 2f 0a 2b 0a 2b 20 20 20 20 54 63      */.+.+    Tc
0460: 6c 44 65 6c 65 74 65 56 61 72 73 28 69 50 74 72  lDeleteVars(iPtr
0470: 2c 20 26 6e 73 50 74 72 2d 3e 76 61 72 54 61 62  , &nsPtr->varTab
0480: 6c 65 29 3b 0a 2b 20 20 20 20 54 63 6c 5f 49 6e  le);.+    Tcl_In
0490: 69 74 48 61 73 68 54 61 62 6c 65 28 26 6e 73 50  itHashTable(&nsP
04a0: 74 72 2d 3e 76 61 72 54 61 62 6c 65 2c 20 54 43  tr->varTable, TC
04b0: 4c 5f 53 54 52 49 4e 47 5f 4b 45 59 53 29 3b 0a  L_STRING_KEYS);.
04c0: 2b 0a 2b 20 20 20 20 2f 2a 0a 20 20 20 20 20 20  +.+    /*.      
04d0: 2a 20 44 65 6c 65 74 65 20 74 68 65 20 6e 61 6d  * Delete the nam
04e0: 65 73 70 61 63 65 20 70 61 74 68 20 69 66 20 6f  espace path if o
04f0: 6e 65 20 69 73 20 69 6e 73 74 61 6c 6c 65 64 2e  ne is installed.
0500: 0a 20 20 20 20 20 20 2a 2f 0a 20 0a 49 6e 64 65  .      */. .Inde
0510: 78 3a 20 74 65 73 74 73 2f 74 72 61 63 65 2e 74  x: tests/trace.t
0520: 65 73 74 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  est.============
0530: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0540: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0550: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0560: 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65  =======.RCS file
0570: 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74  : /cvsroot/tcl/t
0580: 63 6c 2f 74 65 73 74 73 2f 74 72 61 63 65 2e 74  cl/tests/trace.t
0590: 65 73 74 2c 76 0a 72 65 74 72 69 65 76 69 6e 67  est,v.retrieving
05a0: 20 72 65 76 69 73 69 6f 6e 20 31 2e 34 31 0a 64   revision 1.41.d
05b0: 69 66 66 20 2d 75 20 2d 72 31 2e 34 31 20 74 72  iff -u -r1.41 tr
05c0: 61 63 65 2e 74 65 73 74 0a 2d 2d 2d 20 74 65 73  ace.test.--- tes
05d0: 74 73 2f 74 72 61 63 65 2e 74 65 73 74 09 32 39  ts/trace.test.29
05e0: 20 4f 63 74 20 32 30 30 35 20 31 39 3a 31 36 3a   Oct 2005 19:16:
05f0: 33 32 20 2d 30 30 30 30 09 31 2e 34 31 0a 2b 2b  32 -0000.1.41.++
0600: 2b 20 74 65 73 74 73 2f 74 72 61 63 65 2e 74 65  + tests/trace.te
0610: 73 74 09 33 31 20 4f 63 74 20 32 30 30 35 20 31  st.31 Oct 2005 1
0620: 39 3a 31 37 3a 30 39 20 2d 30 30 30 30 0a 40 40  9:17:09 -0000.@@
0630: 20 2d 31 31 37 39 2c 37 20 2b 31 31 37 39 2c 37   -1179,7 +1179,7
0640: 20 40 40 0a 20 20 20 20 20 6e 61 6d 65 73 70 61   @@.     namespa
0650: 63 65 20 64 65 6c 65 74 65 20 3a 3a 72 65 66 0a  ce delete ::ref.
0660: 20 20 20 20 20 72 65 6e 61 6d 65 20 64 6f 54 72       rename doTr
0670: 61 63 65 20 7b 7d 0a 20 20 20 20 20 73 65 74 20  ace {}.     set 
0680: 69 6e 66 6f 0a 2d 7d 20 31 31 31 30 0a 2b 7d 20  info.-} 1110.+} 
0690: 31 30 31 30 0a 20 0a 20 23 20 44 65 6c 65 74 65  1010. . # Delete
06a0: 20 61 72 72 61 79 73 20 77 68 65 6e 20 64 6f 6e   arrays when don
06b0: 65 2c 20 73 6f 20 74 68 65 79 20 63 61 6e 20 62  e, so they can b
06c0: 65 20 72 65 2d 75 73 65 64 20 61 73 20 73 63 61  e re-used as sca
06d0: 6c 61 72 73 0a 20 23 20 65 6c 73 65 77 68 65 72  lars. # elsewher
06e0: 65 2e 0a                                         e..