Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Slightly simpler test for empty string, still covering all cases. Also prepare testpurebytesobj for strings >2G |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | core-8-6-branch |
Files: | files | file ages | folders |
SHA3-256: |
e94a8f9c8f9a69503af349f1c1828fe0 |
User & Date: | jan.nijtmans 2019-01-13 15:37:42.472 |
References
2019-01-20
| ||
19:17 | • Open ticket [cc1e91552c]: Regression in list expansion plus 5 other changes artifact: 58f7b0a99a user: fvogel | |
Context
2019-01-14
| ||
08:55 | minor optimization: check length instead of content - don't touch other memory (so potentially fewer... check-in: 0d30c65682 user: sebres tags: core-8-6-branch | |
2019-01-13
| ||
15:43 | Merge 8.6 check-in: 372ad13f77 user: jan.nijtmans tags: core-8-branch | |
15:37 | Slightly simpler test for empty string, still covering all cases. Also prepare testpurebytesobj for ... check-in: e94a8f9c8f user: jan.nijtmans tags: core-8-6-branch | |
2019-01-11
| ||
16:29 | provided test-cases covering crash fixed by [58c46e74b931d3a1], as well as new test-facility "testpu... check-in: 1671ba2d5c user: sebres tags: core-8-6-branch | |
Changes
Changes to generic/tclExecute.c.
︙ | ︙ | |||
5234 5235 5236 5237 5238 5239 5240 | NEXT_INST_F(10, 1, 0); } #endif /* Every range of an empty list is an empty list */ if (objc == 0) { /* avoid return of not canonical list (e. g. spaces in string repr.) */ | | | 5234 5235 5236 5237 5238 5239 5240 5241 5242 5243 5244 5245 5246 5247 5248 | NEXT_INST_F(10, 1, 0); } #endif /* Every range of an empty list is an empty list */ if (objc == 0) { /* avoid return of not canonical list (e. g. spaces in string repr.) */ if (!valuePtr->bytes || !valuePtr->bytes[0]) { TRACE_APPEND(("\n")); NEXT_INST_F(9, 0, 0); } goto emptyList; } /* Decode index value operands. */ |
︙ | ︙ |
Changes to generic/tclTest.c.
︙ | ︙ | |||
2081 2082 2083 2084 2085 2086 2087 | Tcl_Obj *const objv[]) /* Argument objects. */ { int length, flags; const char *script; flags = 0; if (objc == 3) { | | | 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 | Tcl_Obj *const objv[]) /* Argument objects. */ { int length, flags; const char *script; flags = 0; if (objc == 3) { const char *global = Tcl_GetString(objv[2]); if (strcmp(global, "global") != 0) { Tcl_AppendResult(interp, "bad value \"", global, "\": must be global", NULL); return TCL_ERROR; } flags = TCL_EVAL_GLOBAL; } else if (objc != 2) { |
︙ | ︙ | |||
4997 4998 4999 5000 5001 5002 5003 | objPtr = Tcl_NewObj(); /* objPtr->internalRep.twoPtrValue.ptr1 = NULL; objPtr->internalRep.twoPtrValue.ptr2 = NULL; */ memset(&objPtr->internalRep, 0, sizeof(objPtr->internalRep)); if (objc == 2) { | | > | 4997 4998 4999 5000 5001 5002 5003 5004 5005 5006 5007 5008 5009 5010 5011 5012 | objPtr = Tcl_NewObj(); /* objPtr->internalRep.twoPtrValue.ptr1 = NULL; objPtr->internalRep.twoPtrValue.ptr2 = NULL; */ memset(&objPtr->internalRep, 0, sizeof(objPtr->internalRep)); if (objc == 2) { const char *s = Tcl_GetString(objv[1]); objPtr->length = objv[1]->length; objPtr->bytes = ckalloc(objPtr->length + 1); memcpy(objPtr->bytes, s, objPtr->length); objPtr->bytes[objPtr->length] = 0; } Tcl_SetObjResult(interp, objPtr); return TCL_OK; } |
︙ | ︙ |