summaryrefslogtreecommitdiffstats
path: root/generic/tclTest.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2022-02-17 10:52:29 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2022-02-17 10:52:29 (GMT)
commitaa93fba41a6764dce6c1f918388efd0f46136ada (patch)
tree7d372bd18e21440cb339aeb273f6d0d605600dec /generic/tclTest.c
parent721b319dcb44dc8af3446dbc91de321fd6a5b707 (diff)
parent6e51a643257c04e64fcd6684e45d068705d9587f (diff)
downloadtcl-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.c13
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);