summaryrefslogtreecommitdiffstats
path: root/generic/tclInt.h
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2022-11-11 22:06:14 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2022-11-11 22:06:14 (GMT)
commit9a97fdffa81a0b9843ef15e85237984100c97bf8 (patch)
tree40873cb8c9c08210b82c4490449a348705d677c1 /generic/tclInt.h
parentee898100a16badc57acbcc0bac4f211b9253d1e9 (diff)
parent874327229c5e64a52e1fc3b4da6a31936ec07ed2 (diff)
downloadtcl-9a97fdffa81a0b9843ef15e85237984100c97bf8.zip
tcl-9a97fdffa81a0b9843ef15e85237984100c97bf8.tar.gz
tcl-9a97fdffa81a0b9843ef15e85237984100c97bf8.tar.bz2
Merge 8.7
Diffstat (limited to 'generic/tclInt.h')
-rw-r--r--generic/tclInt.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/generic/tclInt.h b/generic/tclInt.h
index ec82abd..036c653 100644
--- a/generic/tclInt.h
+++ b/generic/tclInt.h
@@ -4852,6 +4852,26 @@ MODULE_SCOPE Tcl_LibraryInitProc Procbodytest_SafeInit;
TCL_DTRACE_OBJ_CREATE(objPtr); \
} while (0)
+#define TclNewUIntObj(objPtr, uw) \
+ do { \
+ TclIncrObjsAllocated(); \
+ TclAllocObjStorage(objPtr); \
+ (objPtr)->refCount = 0; \
+ (objPtr)->bytes = NULL; \
+ Tcl_WideUInt uw_ = (uw); \
+ if (uw_ > WIDE_MAX) { \
+ mp_int bignumValue_; \
+ if (mp_init_u64(&bignumValue_, uw_) != MP_OKAY) { \
+ Tcl_Panic("%s: memory overflow", "TclNewUIntObj"); \
+ } \
+ TclSetBignumInternalRep((objPtr), &bignumValue_); \
+ } else { \
+ (objPtr)->internalRep.wideValue = (Tcl_WideInt)(uw_); \
+ (objPtr)->typePtr = &tclIntType; \
+ } \
+ TCL_DTRACE_OBJ_CREATE(objPtr); \
+ } while (0)
+
#define TclNewIndexObj(objPtr, w) \
TclNewIntObj(objPtr, w)
@@ -4880,6 +4900,21 @@ MODULE_SCOPE Tcl_LibraryInitProc Procbodytest_SafeInit;
#define TclNewIntObj(objPtr, w) \
(objPtr) = Tcl_NewWideIntObj(w)
+#define TclNewUIntObj(objPtr, uw) \
+ do { \
+ Tcl_WideUInt uw_ = (uw); \
+ if (uw_ > WIDE_MAX) { \
+ mp_int bignumValue_; \
+ if (mp_init_u64(&bignumValue_, uw_) == MP_OKAY) { \
+ (objPtr) = Tcl_NewBignumObj(&bignumValue_)); \
+ } else { \
+ (objPtr) = NULL; \
+ } \
+ } else { \
+ (objPtr) = Tcl_NewWideIntObj(uw_); \
+ } \
+ } while (0)
+
#define TclNewIndexObj(objPtr, w) \
TclNewIntObj(objPtr, w)