In generic/tclCkalloc.c there are 3 places where a pointer is cast to "unsigned long" which
is only 32bits (on MS Windows at least) resulting in truncation of 64bit memory addresses.
The "unsigned long" should be replaced with "size_t" or similar.
memp = (struct mem_header *) (((unsigned long) ptr) - BODY_OFFSET);
Fixed on all open branches