Artifact
c70cc82f90954b56b5e7499b93f18c8647bcade7:
Attachment "patch-generic_tclBinary_c" to
ticket [3551813fff]
added by
stwo
2012-07-30 12:51:06.
0000: 24 4f 70 65 6e 42 53 44 24 0a 2d 2d 2d 20 67 65 $OpenBSD$.--- ge
0010: 6e 65 72 69 63 2f 74 63 6c 42 69 6e 61 72 79 2e neric/tclBinary.
0020: 63 2e 6f 72 69 67 09 4d 6f 6e 20 4a 75 6c 20 31 c.orig.Mon Jul 1
0030: 36 20 30 37 3a 35 37 3a 30 35 20 32 30 31 32 0a 6 07:57:05 2012.
0040: 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c 42 +++ generic/tclB
0050: 69 6e 61 72 79 2e 63 09 53 61 74 20 4a 75 6c 20 inary.c.Sat Jul
0060: 32 38 20 31 31 3a 34 38 3a 32 38 20 32 30 31 32 28 11:48:28 2012
0070: 0a 40 40 20 2d 31 33 31 35 2c 31 30 20 2b 31 33 .@@ -1315,10 +13
0080: 31 35 2c 31 39 20 40 40 20 54 63 6c 5f 42 69 6e 15,19 @@ Tcl_Bin
0090: 61 72 79 4f 62 6a 43 6d 64 28 0a 20 09 09 62 72 aryObjCmd(. ..br
00a0: 65 61 6b 3b 0a 20 09 20 20 20 20 63 61 73 65 20 eak;. . case
00b0: 27 40 27 3a 0a 20 09 09 69 66 20 28 63 6f 75 6e '@':. ..if (coun
00c0: 74 20 3d 3d 20 42 49 4e 41 52 59 5f 4e 4f 43 4f t == BINARY_NOCO
00d0: 55 4e 54 29 20 7b 0a 2d 09 09 20 20 20 20 44 65 UNT) {.-.. De
00e0: 6c 65 74 65 53 63 61 6e 4e 75 6d 62 65 72 43 61 leteScanNumberCa
00f0: 63 68 65 28 6e 75 6d 62 65 72 43 61 63 68 65 50 che(numberCacheP
0100: 74 72 29 3b 0a 2d 09 09 20 20 20 20 67 6f 74 6f tr);.-.. goto
0110: 20 62 61 64 43 6f 75 6e 74 3b 0a 2d 09 09 7d 0a badCount;.-..}.
0120: 2d 09 09 69 66 20 28 28 63 6f 75 6e 74 20 3d 3d -..if ((count ==
0130: 20 42 49 4e 41 52 59 5f 41 4c 4c 29 20 7c 7c 20 BINARY_ALL) ||
0140: 28 63 6f 75 6e 74 20 3e 20 6c 65 6e 67 74 68 29 (count > length)
0150: 29 20 7b 0a 2b 09 09 20 20 20 20 69 66 20 28 61 ) {.+.. if (a
0160: 72 67 20 3e 3d 20 6f 62 6a 63 29 20 7b 0a 2b 09 rg >= objc) {.+.
0170: 09 09 44 65 6c 65 74 65 53 63 61 6e 4e 75 6d 62 ..DeleteScanNumb
0180: 65 72 43 61 63 68 65 28 6e 75 6d 62 65 72 43 61 erCache(numberCa
0190: 63 68 65 50 74 72 29 3b 0a 2b 09 09 09 67 6f 74 chePtr);.+...got
01a0: 6f 20 62 61 64 49 6e 64 65 78 3b 0a 2b 09 09 20 o badIndex;.+..
01b0: 20 20 20 7d 0a 2b 09 09 20 20 20 20 76 61 6c 75 }.+.. valu
01c0: 65 50 74 72 20 3d 20 54 63 6c 5f 4e 65 77 49 6e ePtr = Tcl_NewIn
01d0: 74 4f 62 6a 28 6f 66 66 73 65 74 29 3b 0a 2b 09 tObj(offset);.+.
01e0: 09 20 20 20 20 72 65 73 75 6c 74 50 74 72 20 3d . resultPtr =
01f0: 20 54 63 6c 5f 4f 62 6a 53 65 74 56 61 72 32 28 Tcl_ObjSetVar2(
0200: 69 6e 74 65 72 70 2c 20 6f 62 6a 76 5b 61 72 67 interp, objv[arg
0210: 5d 2c 20 4e 55 4c 4c 2c 0a 2b 09 09 09 20 20 20 ], NULL,.+...
0220: 20 76 61 6c 75 65 50 74 72 2c 20 54 43 4c 5f 4c valuePtr, TCL_L
0230: 45 41 56 45 5f 45 52 52 5f 4d 53 47 29 3b 0a 2b EAVE_ERR_MSG);.+
0240: 09 09 20 20 20 20 61 72 67 2b 2b 3b 0a 2b 09 09 .. arg++;.+..
0250: 20 20 20 20 69 66 20 28 72 65 73 75 6c 74 50 74 if (resultPt
0260: 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09 09 r == NULL) {.+..
0270: 09 44 65 6c 65 74 65 53 63 61 6e 4e 75 6d 62 65 .DeleteScanNumbe
0280: 72 43 61 63 68 65 28 6e 75 6d 62 65 72 43 61 63 rCache(numberCac
0290: 68 65 50 74 72 29 3b 0a 2b 09 09 09 72 65 74 75 hePtr);.+...retu
02a0: 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 2b 09 rn TCL_ERROR;.+.
02b0: 09 20 20 20 20 7d 0a 2b 09 09 7d 20 65 6c 73 65 . }.+..} else
02c0: 20 69 66 20 28 28 63 6f 75 6e 74 20 3d 3d 20 42 if ((count == B
02d0: 49 4e 41 52 59 5f 41 4c 4c 29 20 7c 7c 20 28 63 INARY_ALL) || (c
02e0: 6f 75 6e 74 20 3e 20 6c 65 6e 67 74 68 29 29 20 ount > length))
02f0: 7b 0a 20 09 09 20 20 20 20 6f 66 66 73 65 74 20 {. .. offset
0300: 3d 20 6c 65 6e 67 74 68 3b 0a 20 09 09 7d 20 65 = length;. ..} e
0310: 6c 73 65 20 7b 0a 20 09 09 20 20 20 20 6f 66 66 lse {. .. off
0320: 73 65 74 20 3d 20 63 6f 75 6e 74 3b 0a set = count;.