summaryrefslogtreecommitdiffstats
path: root/generic/tkObj.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2017-01-20 14:37:27 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2017-01-20 14:37:27 (GMT)
commitb8a68d0c335e5b303b12e9fd8194e27be780a219 (patch)
tree17fd1a08d397cdc6fc894f06d6de1d3c2eb7c142 /generic/tkObj.c
parent0c33edcbe038707fa9ad175f159140800fc6c621 (diff)
downloadtk-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.c15
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;
}