diff options
| author | nijtmans@users.sourceforge.net <jan.nijtmans> | 2013-01-24 14:56:10 (GMT) |
|---|---|---|
| committer | nijtmans@users.sourceforge.net <jan.nijtmans> | 2013-01-24 14:56:10 (GMT) |
| commit | db7ba23da1688c15a62b010a2beb4b674e986e68 (patch) | |
| tree | f90b6033f77820bd87ea88fdf29ae43ef4022bf1 /generic/tclIndexObj.c | |
| parent | 71dc10794592d41842ce97ad87c8d78cf66194b6 (diff) | |
| parent | b89f9b5610dc991d26ba4ddbcdcce6feceaf3530 (diff) | |
| download | tcl-db7ba23da1688c15a62b010a2beb4b674e986e68.zip tcl-db7ba23da1688c15a62b010a2beb4b674e986e68.tar.gz tcl-db7ba23da1688c15a62b010a2beb4b674e986e68.tar.bz2 | |
merge core-8-5-branch
Diffstat (limited to 'generic/tclIndexObj.c')
| -rw-r--r-- | generic/tclIndexObj.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/generic/tclIndexObj.c b/generic/tclIndexObj.c index 944fb8e..8ec1b68 100644 --- a/generic/tclIndexObj.c +++ b/generic/tclIndexObj.c @@ -53,12 +53,12 @@ typedef struct { * The following macros greatly simplify moving through a table... */ -#define STRING_AT(table, offset, index) \ - (*((const char *const *)(((char *)(table)) + ((offset) * (index))))) +#define STRING_AT(table, offset) \ + (*((const char *const *)(((char *)(table)) + (offset)))) #define NEXT_ENTRY(table, offset) \ - (&(STRING_AT(table, offset, 1))) + (&(STRING_AT(table, offset))) #define EXPAND_OF(indexRep) \ - STRING_AT((indexRep)->tablePtr, (indexRep)->offset, (indexRep)->index) + STRING_AT((indexRep)->tablePtr, (indexRep)->offset*(indexRep)->index) /* *---------------------------------------------------------------------- @@ -138,7 +138,7 @@ Tcl_GetIndexFromObj( * proper match, then TCL_ERROR is returned and an error message is left * in interp's result (unless interp is NULL). The msg argument is used * in the error message; for example, if msg has the value "option" then - * the error message will say something flag 'bad option "foo": must be + * the error message will say something like 'bad option "foo": must be * ...' * * Side effects: @@ -170,6 +170,10 @@ Tcl_GetIndexFromObjStruct( Tcl_Obj *resultPtr; IndexRep *indexRep; + /* Protect against invalid values, like -1 or 0. */ + if (offset < (int)sizeof(char *)) { + offset = (int)sizeof(char *); + } /* * See if there is a valid cached result from a previous lookup. */ |
