diff options
| author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2022-02-17 10:52:29 (GMT) |
|---|---|---|
| committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2022-02-17 10:52:29 (GMT) |
| commit | aa93fba41a6764dce6c1f918388efd0f46136ada (patch) | |
| tree | 7d372bd18e21440cb339aeb273f6d0d605600dec /generic/tclTest.c | |
| parent | 721b319dcb44dc8af3446dbc91de321fd6a5b707 (diff) | |
| parent | 6e51a643257c04e64fcd6684e45d068705d9587f (diff) | |
| download | tcl-aa93fba41a6764dce6c1f918388efd0f46136ada.zip tcl-aa93fba41a6764dce6c1f918388efd0f46136ada.tar.gz tcl-aa93fba41a6764dce6c1f918388efd0f46136ada.tar.bz2 | |
Implement TIP #613: New INDEX_NULL_OK flag for Tcl_GetIndexFromObj*()
Diffstat (limited to 'generic/tclTest.c')
| -rw-r--r-- | generic/tclTest.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/generic/tclTest.c b/generic/tclTest.c index c8c3402..0db8587 100644 --- a/generic/tclTest.c +++ b/generic/tclTest.c @@ -6289,7 +6289,8 @@ TestGetIndexFromObjStructObjCmd( const char *const ary[] = { "a", "b", "c", "d", "ee", "ff", NULL, NULL }; - int idx,target, flags = 0; + int target, flags = 0; + signed char idx[8]; if (objc != 3 && objc != 4) { Tcl_WrongNumArgs(interp, 1, objv, "argument targetvalue ?flags?"); @@ -6301,13 +6302,17 @@ TestGetIndexFromObjStructObjCmd( if ((objc > 3) && (Tcl_GetIntFromObj(interp, objv[3], &flags) != TCL_OK)) { return TCL_ERROR; } + memset(idx, 85, sizeof(idx)); if (Tcl_GetIndexFromObjStruct(interp, (Tcl_GetString(objv[1])[0] ? objv[1] : NULL), ary, 2*sizeof(char *), - "dummy", flags, &idx) != TCL_OK) { + "dummy", flags, &idx[1]) != TCL_OK) { return TCL_ERROR; } - if (idx != target) { + if (idx[0] != 85 || idx[2] != 85) { + Tcl_AppendResult(interp, "Tcl_GetIndexFromObjStruct overwrites bytes near index variable", NULL); + return TCL_ERROR; + } else if (idx[1] != target) { char buffer[64]; - sprintf(buffer, "%d", idx); + sprintf(buffer, "%d", idx[1]); Tcl_AppendResult(interp, "index value comparison failed: got ", buffer, NULL); sprintf(buffer, "%d", target); |
