@@ -4852,6 +4852,26 @@ MODULE_SCOPE Tcl_LibraryInitProc Procbodytest_SafeInit;
4852
4852
TCL_DTRACE_OBJ_CREATE(objPtr); \
4853
4853
} while (0)
4854
4854
4855
+ #define TclNewUIntObj (objPtr , uw ) \
4856
+ do { \
4857
+ TclIncrObjsAllocated(); \
4858
+ TclAllocObjStorage(objPtr); \
4859
+ (objPtr)->refCount = 0; \
4860
+ (objPtr)->bytes = NULL; \
4861
+ Tcl_WideUInt uw_ = (uw); \
4862
+ if (uw_ > WIDE_MAX) { \
4863
+ mp_int bignumValue_; \
4864
+ if (mp_init_u64(&bignumValue_, uw_) != MP_OKAY) { \
4865
+ Tcl_Panic("%s: memory overflow", "TclNewUIntObj"); \
4866
+ } \
4867
+ TclSetBignumInternalRep((objPtr), &bignumValue_); \
4868
+ } else { \
4869
+ (objPtr)->internalRep.wideValue = (Tcl_WideInt)(uw_); \
4870
+ (objPtr)->typePtr = &tclIntType; \
4871
+ } \
4872
+ TCL_DTRACE_OBJ_CREATE(objPtr); \
4873
+ } while (0)
4874
+
4855
4875
#define TclNewIndexObj (objPtr , w ) \
4856
4876
TclNewIntObj(objPtr, w)
4857
4877
@@ -4880,6 +4900,21 @@ MODULE_SCOPE Tcl_LibraryInitProc Procbodytest_SafeInit;
4880
4900
#define TclNewIntObj (objPtr , w ) \
4881
4901
(objPtr) = Tcl_NewWideIntObj(w)
4882
4902
4903
+ #define TclNewUIntObj (objPtr , uw ) \
4904
+ do { \
4905
+ Tcl_WideUInt uw_ = (uw); \
4906
+ if (uw_ > WIDE_MAX) { \
4907
+ mp_int bignumValue_; \
4908
+ if (mp_init_u64(&bignumValue_, uw_) == MP_OKAY) { \
4909
+ (objPtr) = Tcl_NewBignumObj(&bignumValue_)); \
4910
+ } else { \
4911
+ (objPtr) = NULL; \
4912
+ } \
4913
+ } else { \
4914
+ (objPtr) = Tcl_NewWideIntObj(uw_); \
4915
+ } \
4916
+ } while (0)
4917
+
4883
4918
#define TclNewIndexObj (objPtr , w ) \
4884
4919
TclNewIntObj(objPtr, w)
4885
4920
0 commit comments