Tcl Source Code

Hex Artifact Content
Login

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;.