diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2022-04-15 11:50:49 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2022-04-15 11:50:49 (GMT) |
commit | 706ec57375c74eee06320a7b6c722e464a10a9ae (patch) | |
tree | c830145dbaab3ada3919a365d9adb3f78ced9925 /generic/tclObj.c | |
parent | b668019660b04154a209504ee27f25e4e5bc55d9 (diff) | |
download | tcl-706ec57375c74eee06320a7b6c722e464a10a9ae.zip tcl-706ec57375c74eee06320a7b6c722e464a10a9ae.tar.gz tcl-706ec57375c74eee06320a7b6c722e464a10a9ae.tar.bz2 |
Use lower 5 bits of flags for sizeof(*(boolPtr))
Diffstat (limited to 'generic/tclObj.c')
-rw-r--r-- | generic/tclObj.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/generic/tclObj.c b/generic/tclObj.c index ae20e16..439e854 100644 --- a/generic/tclObj.c +++ b/generic/tclObj.c @@ -2206,22 +2206,20 @@ Tcl_GetBoolFromObj( result = 1; boolEnd: if (boolPtr != NULL) { - if ((flags>>8) & (int)~sizeof(int)) { - if ((flags>>8) == sizeof(int64_t)) { + flags &= (TCL_NULL_OK - 1); + if (flags & (int)~sizeof(int8_t)) { + if (flags == sizeof(int64_t)) { *(int64_t *)boolPtr = result; return TCL_OK; - } else if ((flags>>8) == sizeof(int32_t)) { + } else if (flags == sizeof(int32_t)) { *(int32_t *)boolPtr = result; return TCL_OK; - } else if ((flags>>8) == sizeof(int16_t)) { + } else if (flags == sizeof(int16_t)) { *(int16_t *)boolPtr = result; return TCL_OK; - } else if ((flags>>8) == sizeof(int8_t)) { - *(int8_t *)boolPtr = result; - return TCL_OK; - } + } } - *(int *)boolPtr = result; + *(int8_t *)boolPtr = result; } return TCL_OK; } |