diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2017-01-20 14:37:27 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2017-01-20 14:37:27 (GMT) |
commit | b8a68d0c335e5b303b12e9fd8194e27be780a219 (patch) | |
tree | 17fd1a08d397cdc6fc894f06d6de1d3c2eb7c142 /generic/tkObj.c | |
parent | 0c33edcbe038707fa9ad175f159140800fc6c621 (diff) | |
download | tk-b8a68d0c335e5b303b12e9fd8194e27be780a219.zip tk-b8a68d0c335e5b303b12e9fd8194e27be780a219.tar.gz tk-b8a68d0c335e5b303b12e9fd8194e27be780a219.tar.bz2 |
Smarter initialization of doubleTypePtr/intTypePtr without hash-table lookup or creating complete Tcl_Obj's.
In Windows tests, allow up to 64 bits for HWND.
Check stubs for "8.6-" in stead of "8.6", for better interoperability with "novem".
Diffstat (limited to 'generic/tkObj.c')
-rw-r--r-- | generic/tkObj.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/generic/tkObj.c b/generic/tkObj.c index 7c09656..90fedbc 100644 --- a/generic/tkObj.c +++ b/generic/tkObj.c @@ -153,8 +153,19 @@ GetTypeCache(void) Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); if (tsdPtr->doubleTypePtr == NULL) { - tsdPtr->doubleTypePtr = Tcl_GetObjType("double"); - tsdPtr->intTypePtr = Tcl_GetObjType("int"); + /* Smart initialization of doubleTypePtr/intTypePtr without + * hash-table lookup or creating complete Tcl_Obj's */ + Tcl_Obj obj; + obj.length = 3; + obj.bytes = (char *)"0.0"; + obj.typePtr = NULL; + Tcl_GetDoubleFromObj(NULL, &obj, &obj.internalRep.doubleValue); + tsdPtr->doubleTypePtr = obj.typePtr; + obj.bytes += 2; + obj.length = 1; + obj.typePtr = NULL; + Tcl_GetLongFromObj(NULL, &obj, &obj.internalRep.longValue); + tsdPtr->intTypePtr = obj.typePtr; } return tsdPtr; } |