Compare commits

...
Author SHA1 Message Date
dgp d969200f54 The TIP 481 machinery compels all callers to add typecasting to their NULL
arguments, which is quite unwelcome.  This branch is a first attempt to
work around this problem.  So far not a working solution because of the
insistence if the sizeof(.) operator that it have an argument of known,
non-void type.  Finding the magic bridge to satisfy that for all three
inputs -- a (size_t *), a (int *), and a NULL -- is still elusive.
2021-11-07 19:18:36 +00:00
+20 -8
View File
@@ -4201,30 +4201,42 @@ extern const TclStubs *tclStubsPtr;
#define Tcl_GetUnicode(objPtr) \
Tcl_GetUnicodeFromObj(objPtr, (int *)NULL)
#undef Tcl_GetBytesFromObj
#define Tcl_GetBytesFromObj(interp, objPtr, x) \
TclGetBytesFromObjInner(interp, objPtr, ((x) ? (x) : (int *)NULL))
#ifdef TCL_NO_DEPRECATED
#undef Tcl_GetStringFromObj
#undef Tcl_GetUnicodeFromObj
#undef Tcl_GetByteArrayFromObj
#define Tcl_GetByteArrayFromObj(objPtr, x) \
TclGetByteArrayFromObjInner(objPtr, ((x) ? (x) : (int *)NULL))
#endif
#if defined(USE_TCL_STUBS)
#define Tcl_GetBytesFromObj(interp, objPtr, sizePtr) \
(sizeof(*sizePtr) <= sizeof(int) ? tclStubsPtr->tclGetBytesFromObj(interp, objPtr, (int *)sizePtr) : tclStubsPtr->tcl_GetBytesFromObj(interp, objPtr, (size_t *)sizePtr))
#define TclGetBytesFromObjInner(interp, objPtr, sizePtr) \
(sizeof(*sizePtr) <= sizeof(int) ? \
tclStubsPtr->tclGetBytesFromObj(interp, objPtr, (int *)sizePtr) : \
tclStubsPtr->tcl_GetBytesFromObj(interp, objPtr, (size_t *)sizePtr))
#ifdef TCL_NO_DEPRECATED
#define Tcl_GetStringFromObj(objPtr, sizePtr) \
(sizeof(*sizePtr) <= sizeof(int) ? tclStubsPtr->tcl_GetStringFromObj(objPtr, (int *)sizePtr) : tclStubsPtr->tclGetStringFromObj(objPtr, (size_t *)sizePtr))
#define Tcl_GetByteArrayFromObj(objPtr, sizePtr) \
(sizeof(*sizePtr) <= sizeof(int) ? tclStubsPtr->tcl_GetByteArrayFromObj(objPtr, (int *)sizePtr) : tclStubsPtr->tclGetByteArrayFromObj(objPtr, (size_t *)sizePtr))
#define TclGetByteArrayFromObjInner(objPtr, sizePtr) \
(sizeof(*sizePtr) <= sizeof(int) ? \
tclStubsPtr->tcl_GetByteArrayFromObj(objPtr, (int *)sizePtr) : \
tclStubsPtr->tclGetByteArrayFromObj(objPtr, (size_t *)sizePtr))
#define Tcl_GetUnicodeFromObj(objPtr, sizePtr) \
(sizeof(*sizePtr) <= sizeof(int) ? tclStubsPtr->tcl_GetUnicodeFromObj(objPtr, (int *)sizePtr) : tclStubsPtr->tclGetUnicodeFromObj(objPtr, (size_t *)sizePtr))
#endif
#else
#define Tcl_GetBytesFromObj(interp, objPtr, sizePtr) \
(sizeof(*sizePtr) <= sizeof(int) ? (TclGetBytesFromObj)(interp, objPtr, (int *)sizePtr) : (Tcl_GetBytesFromObj)(interp, objPtr, (size_t *)sizePtr))
#define TclGetBytesFromObjInner(interp, objPtr, sizePtr) \
(sizeof(*sizePtr) <= sizeof(int) ? \
(TclGetBytesFromObj)(interp, objPtr, (int *)sizePtr) : \
(Tcl_GetBytesFromObj)(interp, objPtr, (size_t *)sizePtr))
#ifdef TCL_NO_DEPRECATED
#define Tcl_GetStringFromObj(objPtr, sizePtr) \
(sizeof(*sizePtr) <= sizeof(int) ? (Tcl_GetStringFromObj)(objPtr, (int *)sizePtr) : (TclGetStringFromObj)(objPtr, (size_t *)sizePtr))
#define Tcl_GetByteArrayFromObj(objPtr, sizePtr) \
(sizeof(*sizePtr) <= sizeof(int) ? (Tcl_GetByteArrayFromObj)(objPtr, (int *)sizePtr) : TclGetByteArrayFromObj(objPtr, (size_t *)sizePtr))
#define TclGetByteArrayFromObjInner(objPtr, sizePtr) \
(sizeof(*sizePtr) <= sizeof(int) ? \
(Tcl_GetByteArrayFromObj)(objPtr, (int *)sizePtr) : \
(TclGetByteArrayFromObj)(objPtr, (size_t *)sizePtr))
#define Tcl_GetUnicodeFromObj(objPtr, sizePtr) \
(sizeof(*sizePtr) <= sizeof(int) ? (Tcl_GetUnicodeFromObj)(objPtr, (int *)sizePtr) : TclGetUnicodeFromObj(objPtr, (size_t *)sizePtr))
#endif