Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | merge 8.6 |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | core-8-branch |
Files: | files | file ages | folders |
SHA3-256: |
e49b46e8e67eb37c8a7946de9d41ba0e |
User & Date: | dgp 2018-03-10 15:45:00.368 |
Context
2018-03-11
| ||
12:22 | merge 8.6 check-in: f27bd866ac user: dgp tags: core-8-branch | |
01:24 | merge 8.7 check-in: 43c7d2973c user: dgp tags: sebres-string-insert-cr1 | |
2018-03-10
| ||
16:05 | merge 8.7 check-in: 58e57236f7 user: dgp tags: bug-e593adf103-core-8 | |
16:03 | merge 8.7 check-in: 01268def02 user: dgp tags: tip-421 | |
15:55 | merge 8.7 check-in: 0892d078f0 user: dgp tags: tip-445 | |
15:45 | merge 8.6 check-in: e49b46e8e6 user: dgp tags: core-8-branch | |
15:41 | Remove unused argument. check-in: 068c425cb0 user: dgp tags: core-8-6-branch | |
14:55 | [db36fa5122] Upgrade the index value parsing and encoding machinery. Refactor many systems to make c... check-in: 02721ee263 user: dgp tags: core-8-branch | |
Changes
Changes to generic/tclUtil.c.
︙ | ︙ | |||
103 104 105 106 107 108 109 | /* * Prototypes for functions defined later in this file. */ static void ClearHash(Tcl_HashTable *tablePtr); static void FreeProcessGlobalValue(ClientData clientData); static void FreeThreadHash(ClientData clientData); | | | | 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 | /* * Prototypes for functions defined later in this file. */ static void ClearHash(Tcl_HashTable *tablePtr); static void FreeProcessGlobalValue(ClientData clientData); static void FreeThreadHash(ClientData clientData); static int GetEndOffsetFromObj(Tcl_Obj *objPtr, int endValue, int *indexPtr); static Tcl_HashTable * GetThreadHash(Tcl_ThreadDataKey *keyPtr); static int SetEndOffsetFromAny(Tcl_Interp *interp, Tcl_Obj *objPtr); static int FindElement(Tcl_Interp *interp, const char *string, int stringLength, const char *typeStr, const char *typeCode, const char **elementPtr, const char **nextPtr, int *sizePtr, |
︙ | ︙ | |||
3580 3581 3582 3583 3584 3585 3586 | char *opPtr; const char *bytes; if (TclGetIntFromObj(NULL, objPtr, indexPtr) == TCL_OK) { return TCL_OK; } | | | 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 | char *opPtr; const char *bytes; if (TclGetIntFromObj(NULL, objPtr, indexPtr) == TCL_OK) { return TCL_OK; } if (GetEndOffsetFromObj(objPtr, endValue, indexPtr) == TCL_OK) { return TCL_OK; } bytes = TclGetString(objPtr); length = objPtr->length; /* |
︙ | ︙ | |||
3663 3664 3665 3666 3667 3668 3669 | * May store a Tcl_ObjType. * *---------------------------------------------------------------------- */ static int GetEndOffsetFromObj( | < | | 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 | * May store a Tcl_ObjType. * *---------------------------------------------------------------------- */ static int GetEndOffsetFromObj( Tcl_Obj *objPtr, /* Pointer to the object to parse */ int endValue, /* The value to be stored at "indexPtr" if * "objPtr" holds "end". */ int *indexPtr) /* Location filled in with an integer * representing an index. */ { if (SetEndOffsetFromAny(NULL, objPtr) != TCL_OK) { return TCL_ERROR; } /* TODO: Handle overflow cases sensibly */ *indexPtr = endValue + (int)objPtr->internalRep.wideValue; return TCL_OK; } |
︙ | ︙ | |||
3860 3861 3862 3863 3864 3865 3866 | /* All negative absolute indices are "before the beginning" */ idx = before; } else if (idx == INT_MAX) { /* This index value is always "after the end" */ idx = after; } /* usual case, the absolute index value encodes itself */ | | | 3859 3860 3861 3862 3863 3864 3865 3866 3867 3868 3869 3870 3871 3872 3873 | /* All negative absolute indices are "before the beginning" */ idx = before; } else if (idx == INT_MAX) { /* This index value is always "after the end" */ idx = after; } /* usual case, the absolute index value encodes itself */ } else if (TCL_OK == GetEndOffsetFromObj(objPtr, 0, &idx)) { /* * We parsed an end+offset index value. * idx holds the offset value in the range INT_MIN...INT_MAX. */ if (idx > 0) { /* * All end+postive or end-negative expressions |
︙ | ︙ |