From 1ab82013f2c14f4c0627dfa13fb18970b9c1db49 Mon Sep 17 00:00:00 2001 From: apnadkarni Date: Wed, 5 Apr 2023 06:40:43 +0000 Subject: Tcl_GetSizeIntFromObj --- generic/tcl.decls | 6 ++++++ generic/tclDecls.h | 9 ++++++--- generic/tclObj.c | 25 +++++++++++++++++++++++++ generic/tclStubInit.c | 2 +- 4 files changed, 38 insertions(+), 4 deletions(-) diff --git a/generic/tcl.decls b/generic/tcl.decls index 7f7fafb..3dfa8dd 100644 --- a/generic/tcl.decls +++ b/generic/tcl.decls @@ -2567,6 +2567,12 @@ declare 685 { Tcl_Obj *Tcl_DStringToObj(Tcl_DString *dsPtr) } +# TIP 660 +declare 686 { + int Tcl_GetSizeIntFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr, + Tcl_Size *sizePtr) +} + # ----- BASELINE -- FOR -- 8.7.0 / 9.0.0 ----- # declare 687 { diff --git a/generic/tclDecls.h b/generic/tclDecls.h index bee2ae2..bcec388 100644 --- a/generic/tclDecls.h +++ b/generic/tclDecls.h @@ -2049,7 +2049,9 @@ EXTERN int Tcl_GetWideUIntFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr, Tcl_WideUInt *uwidePtr); /* 685 */ EXTERN Tcl_Obj * Tcl_DStringToObj(Tcl_DString *dsPtr); -/* Slot 686 is reserved */ +/* 686 */ +EXTERN int Tcl_GetSizeIntFromObj(Tcl_Interp *interp, + Tcl_Obj *objPtr, Tcl_Size *sizePtr); /* 687 */ EXTERN void TclUnusedStubEntry(void); @@ -2773,7 +2775,7 @@ typedef struct TclStubs { Tcl_Size (*tcl_GetEncodingNulLength) (Tcl_Encoding encoding); /* 683 */ int (*tcl_GetWideUIntFromObj) (Tcl_Interp *interp, Tcl_Obj *objPtr, Tcl_WideUInt *uwidePtr); /* 684 */ Tcl_Obj * (*tcl_DStringToObj) (Tcl_DString *dsPtr); /* 685 */ - void (*reserved686)(void); + int (*tcl_GetSizeIntFromObj) (Tcl_Interp *interp, Tcl_Obj *objPtr, Tcl_Size *sizePtr); /* 686 */ void (*tclUnusedStubEntry) (void); /* 687 */ } TclStubs; @@ -4177,7 +4179,8 @@ extern const TclStubs *tclStubsPtr; (tclStubsPtr->tcl_GetWideUIntFromObj) /* 684 */ #define Tcl_DStringToObj \ (tclStubsPtr->tcl_DStringToObj) /* 685 */ -/* Slot 686 is reserved */ +#define Tcl_GetSizeIntFromObj \ + (tclStubsPtr->tcl_GetSizeIntFromObj) /* 686 */ #define TclUnusedStubEntry \ (tclStubsPtr->tclUnusedStubEntry) /* 687 */ diff --git a/generic/tclObj.c b/generic/tclObj.c index 99368fe..9d6cd2d 100644 --- a/generic/tclObj.c +++ b/generic/tclObj.c @@ -3555,6 +3555,31 @@ TclGetWideBitsFromObj( /* *---------------------------------------------------------------------- * + * Tcl_GetSizeIntFromObj -- + * + * Attempt to return a Tcl_Size from the Tcl object "objPtr". + * + * Results: + * TCL_OK - the converted Tcl_Size value is stored in *sizePtr + * TCL_ERROR - the error message is stored in interp + * + * Side effects: + * The function may free up any existing internal representation. + * + *---------------------------------------------------------------------- + */ +int +Tcl_GetSizeIntFromObj( + Tcl_Interp *interp, /* Used for error reporting if not NULL. */ + Tcl_Obj *objPtr, /* The object from which to get a int. */ + Tcl_Size *sizePtr) /* Place to store resulting int. */ +{ + return Tcl_GetIntFromObj(interp, objPtr, sizePtr); +} + +/* + *---------------------------------------------------------------------- + * * FreeBignum -- * * This function frees the internal rep of a bignum. diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c index ddc0bc9..6d29465 100644 --- a/generic/tclStubInit.c +++ b/generic/tclStubInit.c @@ -2057,7 +2057,7 @@ const TclStubs tclStubs = { Tcl_GetEncodingNulLength, /* 683 */ Tcl_GetWideUIntFromObj, /* 684 */ Tcl_DStringToObj, /* 685 */ - 0, /* 686 */ + Tcl_GetSizeIntFromObj, /* 686 */ TclUnusedStubEntry, /* 687 */ }; -- cgit v0.12 From 3c2a7e1741bd4cba6bab6deae6c97256b04a6d79 Mon Sep 17 00:00:00 2001 From: apnadkarni Date: Wed, 5 Apr 2023 11:03:35 +0000 Subject: Add TCL_SIZE_MAX and TCL_SIZE_MODIFIER --- generic/tcl.h | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/generic/tcl.h b/generic/tcl.h index 9140ec4..7ef4180 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -399,16 +399,31 @@ typedef unsigned TCL_WIDE_INT_TYPE Tcl_WideUInt; # define TCL_Z_MODIFIER "" # endif #endif /* !TCL_Z_MODIFIER */ +#ifndef TCL_T_MODIFIER +# if defined(__GNUC__) && !defined(_WIN32) +# define TCL_T_MODIFIER "t" +# elif defined(_WIN64) +# define TCL_T_MODIFIER TCL_LL_MODIFIER +# else +# define TCL_T_MODIFIER TCL_Z_MODIFIER +# endif +#endif /* !TCL_T_MODIFIER */ + #define Tcl_WideAsLong(val) ((long)((Tcl_WideInt)(val))) #define Tcl_LongAsWide(val) ((Tcl_WideInt)((long)(val))) #define Tcl_WideAsDouble(val) ((double)((Tcl_WideInt)(val))) #define Tcl_DoubleAsWide(val) ((Tcl_WideInt)((double)(val))) -#if TCL_MAJOR_VERSION > 8 -typedef size_t Tcl_Size; + +#if TCL_MAJOR_VERSION < 9 + typedef int Tcl_Size; +# define TCL_SIZE_MAX INT_MAX +# define TCL_SIZE_MODIFIER "" #else -typedef int Tcl_Size; -#endif + typedef ptrdiff_t Tcl_Size; +# define TCL_SIZE_MAX PTRDIFF_MAX +# define TCL_SIZE_MODIFIER TCL_T_MODIFIER +#endif /* TCL_MAJOR_VERSION */ #ifdef _WIN32 # if TCL_MAJOR_VERSION > 8 || defined(_WIN64) || defined(_USE_64BIT_TIME_T) -- cgit v0.12 From a9974c36d092201f528c8b8272ed47a2811e6ce7 Mon Sep 17 00:00:00 2001 From: apnadkarni Date: Sun, 16 Apr 2023 17:31:58 +0000 Subject: size_t -> ptrdiff_t to match Tcl 9 unsigned->signed change --- generic/tcl.decls | 26 +++++++------- generic/tclBasic.c | 2 +- generic/tclBinary.c | 4 +-- generic/tclDecls.h | 96 +++++++++++++++++++++++++------------------------- generic/tclObj.c | 6 ++-- generic/tclStringObj.c | 2 +- generic/tclStubInit.c | 14 ++++---- 7 files changed, 75 insertions(+), 75 deletions(-) diff --git a/generic/tcl.decls b/generic/tcl.decls index 8082069..6ac10cb 100644 --- a/generic/tcl.decls +++ b/generic/tcl.decls @@ -2413,19 +2413,19 @@ declare 649 { } declare 650 { unsigned char *Tcl_GetBytesFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr, - size_t *numBytesPtr) + ptrdiff_t *numBytesPtr) } # TIP #481 declare 651 { - char *TclGetStringFromObj(Tcl_Obj *objPtr, size_t *lengthPtr) + char *TclGetStringFromObj(Tcl_Obj *objPtr, ptrdiff_t *lengthPtr) } declare 652 { - unsigned short *TclGetUnicodeFromObj(Tcl_Obj *objPtr, size_t *lengthPtr) + unsigned short *TclGetUnicodeFromObj(Tcl_Obj *objPtr, ptrdiff_t *lengthPtr) } # Only available in Tcl 8.x, NULL in Tcl 9.0 declare 653 { - unsigned char *TclGetByteArrayFromObj(Tcl_Obj *objPtr, size_t *numBytesPtr) + unsigned char *TclGetByteArrayFromObj(Tcl_Obj *objPtr, ptrdiff_t *numBytesPtr) } # TIP #575 @@ -2462,28 +2462,28 @@ declare 660 { # TIP #616 declare 661 { int TclListObjGetElements(Tcl_Interp *interp, Tcl_Obj *listPtr, - size_t *objcPtr, Tcl_Obj ***objvPtr) + ptrdiff_t *objcPtr, Tcl_Obj ***objvPtr) } declare 662 { int TclListObjLength(Tcl_Interp *interp, Tcl_Obj *listPtr, - size_t *lengthPtr) + ptrdiff_t *lengthPtr) } declare 663 { - int TclDictObjSize(Tcl_Interp *interp, Tcl_Obj *dictPtr, size_t *sizePtr) + int TclDictObjSize(Tcl_Interp *interp, Tcl_Obj *dictPtr, ptrdiff_t *sizePtr) } declare 664 { - int TclSplitList(Tcl_Interp *interp, const char *listStr, size_t *argcPtr, + int TclSplitList(Tcl_Interp *interp, const char *listStr, ptrdiff_t *argcPtr, const char ***argvPtr) } declare 665 { - void TclSplitPath(const char *path, size_t *argcPtr, const char ***argvPtr) + void TclSplitPath(const char *path, ptrdiff_t *argcPtr, const char ***argvPtr) } declare 666 { - Tcl_Obj *TclFSSplitPath(Tcl_Obj *pathPtr, size_t *lenPtr) + Tcl_Obj *TclFSSplitPath(Tcl_Obj *pathPtr, ptrdiff_t *lenPtr) } declare 667 { int TclParseArgsObjv(Tcl_Interp *interp, const Tcl_ArgvInfo *argTable, - size_t *objcPtr, Tcl_Obj *const *objv, Tcl_Obj ***remObjv) + ptrdiff_t *objcPtr, Tcl_Obj *const *objv, Tcl_Obj ***remObjv) } # TIP #617 @@ -2533,7 +2533,7 @@ declare 678 { } declare 679 { int Tcl_NRCallObjProc2(Tcl_Interp *interp, Tcl_ObjCmdProc2 *objProc2, - void *clientData, size_t objc, Tcl_Obj *const objv[]) + void *clientData, ptrdiff_t objc, Tcl_Obj *const objv[]) } # TIP #638. @@ -2542,7 +2542,7 @@ declare 680 { void **clientDataPtr, int *typePtr) } declare 681 { - int Tcl_GetNumber(Tcl_Interp *interp, const char *bytes, size_t numBytes, + int Tcl_GetNumber(Tcl_Interp *interp, const char *bytes, ptrdiff_t numBytes, void **clientDataPtr, int *typePtr) } diff --git a/generic/tclBasic.c b/generic/tclBasic.c index abc5d60..70d2160 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -9192,7 +9192,7 @@ Tcl_NRCallObjProc2( Tcl_Interp *interp, Tcl_ObjCmdProc2 *objProc, void *clientData, - size_t objc, + ptrdiff_t objc, Tcl_Obj *const objv[]) { if (objc > INT_MAX) { diff --git a/generic/tclBinary.c b/generic/tclBinary.c index b956bd0..204830b 100644 --- a/generic/tclBinary.c +++ b/generic/tclBinary.c @@ -457,7 +457,7 @@ unsigned char * Tcl_GetBytesFromObj( Tcl_Interp *interp, /* For error reporting */ Tcl_Obj *objPtr, /* Value to extract from */ - size_t *numBytesPtr) /* If non-NULL, write the number of bytes + ptrdiff_t *numBytesPtr) /* If non-NULL, write the number of bytes * in the array here */ { ByteArray *baPtr; @@ -539,7 +539,7 @@ Tcl_GetByteArrayFromObj( unsigned char * TclGetByteArrayFromObj( Tcl_Obj *objPtr, /* The ByteArray object. */ - size_t *numBytesPtr) /* If non-NULL, write the number of bytes + ptrdiff_t *numBytesPtr) /* If non-NULL, write the number of bytes * in the array here */ { ByteArray *baPtr; diff --git a/generic/tclDecls.h b/generic/tclDecls.h index 6dca873..7d82250 100644 --- a/generic/tclDecls.h +++ b/generic/tclDecls.h @@ -1936,16 +1936,16 @@ EXTERN unsigned char * TclGetBytesFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr, int *numBytesPtr); /* 650 */ EXTERN unsigned char * Tcl_GetBytesFromObj(Tcl_Interp *interp, - Tcl_Obj *objPtr, size_t *numBytesPtr); + Tcl_Obj *objPtr, ptrdiff_t *numBytesPtr); /* 651 */ EXTERN char * TclGetStringFromObj(Tcl_Obj *objPtr, - size_t *lengthPtr); + ptrdiff_t *lengthPtr); /* 652 */ EXTERN unsigned short * TclGetUnicodeFromObj(Tcl_Obj *objPtr, - size_t *lengthPtr); + ptrdiff_t *lengthPtr); /* 653 */ EXTERN unsigned char * TclGetByteArrayFromObj(Tcl_Obj *objPtr, - size_t *numBytesPtr); + ptrdiff_t *numBytesPtr); /* 654 */ EXTERN int Tcl_UtfCharComplete(const char *src, Tcl_Size length); /* 655 */ @@ -1971,26 +1971,26 @@ EXTERN int Tcl_AsyncMarkFromSignal(Tcl_AsyncHandler async, int sigNumber); /* 661 */ EXTERN int TclListObjGetElements(Tcl_Interp *interp, - Tcl_Obj *listPtr, size_t *objcPtr, + Tcl_Obj *listPtr, ptrdiff_t *objcPtr, Tcl_Obj ***objvPtr); /* 662 */ EXTERN int TclListObjLength(Tcl_Interp *interp, - Tcl_Obj *listPtr, size_t *lengthPtr); + Tcl_Obj *listPtr, ptrdiff_t *lengthPtr); /* 663 */ EXTERN int TclDictObjSize(Tcl_Interp *interp, Tcl_Obj *dictPtr, - size_t *sizePtr); + ptrdiff_t *sizePtr); /* 664 */ EXTERN int TclSplitList(Tcl_Interp *interp, const char *listStr, - size_t *argcPtr, const char ***argvPtr); + ptrdiff_t *argcPtr, const char ***argvPtr); /* 665 */ -EXTERN void TclSplitPath(const char *path, size_t *argcPtr, +EXTERN void TclSplitPath(const char *path, ptrdiff_t *argcPtr, const char ***argvPtr); /* 666 */ -EXTERN Tcl_Obj * TclFSSplitPath(Tcl_Obj *pathPtr, size_t *lenPtr); +EXTERN Tcl_Obj * TclFSSplitPath(Tcl_Obj *pathPtr, ptrdiff_t *lenPtr); /* 667 */ EXTERN int TclParseArgsObjv(Tcl_Interp *interp, const Tcl_ArgvInfo *argTable, - size_t *objcPtr, Tcl_Obj *const *objv, + ptrdiff_t *objcPtr, Tcl_Obj *const *objv, Tcl_Obj ***remObjv); /* 668 */ EXTERN Tcl_Size Tcl_UniCharLen(const int *uniStr); @@ -2030,14 +2030,14 @@ EXTERN Tcl_Command Tcl_NRCreateCommand2(Tcl_Interp *interp, /* 679 */ EXTERN int Tcl_NRCallObjProc2(Tcl_Interp *interp, Tcl_ObjCmdProc2 *objProc2, void *clientData, - size_t objc, Tcl_Obj *const objv[]); + ptrdiff_t objc, Tcl_Obj *const objv[]); /* 680 */ EXTERN int Tcl_GetNumberFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr, void **clientDataPtr, int *typePtr); /* 681 */ EXTERN int Tcl_GetNumber(Tcl_Interp *interp, const char *bytes, - size_t numBytes, void **clientDataPtr, + ptrdiff_t numBytes, void **clientDataPtr, int *typePtr); /* 682 */ EXTERN int Tcl_RemoveChannelMode(Tcl_Interp *interp, @@ -2740,10 +2740,10 @@ typedef struct TclStubs { char * (*tcl_UniCharToUtfDString) (const int *uniStr, Tcl_Size uniLength, Tcl_DString *dsPtr); /* 647 */ int * (*tcl_UtfToUniCharDString) (const char *src, Tcl_Size length, Tcl_DString *dsPtr); /* 648 */ unsigned char * (*tclGetBytesFromObj) (Tcl_Interp *interp, Tcl_Obj *objPtr, int *numBytesPtr); /* 649 */ - unsigned char * (*tcl_GetBytesFromObj) (Tcl_Interp *interp, Tcl_Obj *objPtr, size_t *numBytesPtr); /* 650 */ - char * (*tclGetStringFromObj) (Tcl_Obj *objPtr, size_t *lengthPtr); /* 651 */ - unsigned short * (*tclGetUnicodeFromObj) (Tcl_Obj *objPtr, size_t *lengthPtr); /* 652 */ - unsigned char * (*tclGetByteArrayFromObj) (Tcl_Obj *objPtr, size_t *numBytesPtr); /* 653 */ + unsigned char * (*tcl_GetBytesFromObj) (Tcl_Interp *interp, Tcl_Obj *objPtr, ptrdiff_t *numBytesPtr); /* 650 */ + char * (*tclGetStringFromObj) (Tcl_Obj *objPtr, ptrdiff_t *lengthPtr); /* 651 */ + unsigned short * (*tclGetUnicodeFromObj) (Tcl_Obj *objPtr, ptrdiff_t *lengthPtr); /* 652 */ + unsigned char * (*tclGetByteArrayFromObj) (Tcl_Obj *objPtr, ptrdiff_t *numBytesPtr); /* 653 */ int (*tcl_UtfCharComplete) (const char *src, Tcl_Size length); /* 654 */ const char * (*tcl_UtfNext) (const char *src); /* 655 */ const char * (*tcl_UtfPrev) (const char *src, const char *start); /* 656 */ @@ -2751,13 +2751,13 @@ typedef struct TclStubs { int (*tcl_ExternalToUtfDStringEx) (Tcl_Interp *interp, Tcl_Encoding encoding, const char *src, Tcl_Size srcLen, int flags, Tcl_DString *dsPtr, Tcl_Size *errorLocationPtr); /* 658 */ int (*tcl_UtfToExternalDStringEx) (Tcl_Interp *interp, Tcl_Encoding encoding, const char *src, Tcl_Size srcLen, int flags, Tcl_DString *dsPtr, Tcl_Size *errorLocationPtr); /* 659 */ int (*tcl_AsyncMarkFromSignal) (Tcl_AsyncHandler async, int sigNumber); /* 660 */ - int (*tclListObjGetElements) (Tcl_Interp *interp, Tcl_Obj *listPtr, size_t *objcPtr, Tcl_Obj ***objvPtr); /* 661 */ - int (*tclListObjLength) (Tcl_Interp *interp, Tcl_Obj *listPtr, size_t *lengthPtr); /* 662 */ - int (*tclDictObjSize) (Tcl_Interp *interp, Tcl_Obj *dictPtr, size_t *sizePtr); /* 663 */ - int (*tclSplitList) (Tcl_Interp *interp, const char *listStr, size_t *argcPtr, const char ***argvPtr); /* 664 */ - void (*tclSplitPath) (const char *path, size_t *argcPtr, const char ***argvPtr); /* 665 */ - Tcl_Obj * (*tclFSSplitPath) (Tcl_Obj *pathPtr, size_t *lenPtr); /* 666 */ - int (*tclParseArgsObjv) (Tcl_Interp *interp, const Tcl_ArgvInfo *argTable, size_t *objcPtr, Tcl_Obj *const *objv, Tcl_Obj ***remObjv); /* 667 */ + int (*tclListObjGetElements) (Tcl_Interp *interp, Tcl_Obj *listPtr, ptrdiff_t *objcPtr, Tcl_Obj ***objvPtr); /* 661 */ + int (*tclListObjLength) (Tcl_Interp *interp, Tcl_Obj *listPtr, ptrdiff_t *lengthPtr); /* 662 */ + int (*tclDictObjSize) (Tcl_Interp *interp, Tcl_Obj *dictPtr, ptrdiff_t *sizePtr); /* 663 */ + int (*tclSplitList) (Tcl_Interp *interp, const char *listStr, ptrdiff_t *argcPtr, const char ***argvPtr); /* 664 */ + void (*tclSplitPath) (const char *path, ptrdiff_t *argcPtr, const char ***argvPtr); /* 665 */ + Tcl_Obj * (*tclFSSplitPath) (Tcl_Obj *pathPtr, ptrdiff_t *lenPtr); /* 666 */ + int (*tclParseArgsObjv) (Tcl_Interp *interp, const Tcl_ArgvInfo *argTable, ptrdiff_t *objcPtr, Tcl_Obj *const *objv, Tcl_Obj ***remObjv); /* 667 */ Tcl_Size (*tcl_UniCharLen) (const int *uniStr); /* 668 */ Tcl_Size (*tclNumUtfChars) (const char *src, Tcl_Size length); /* 669 */ Tcl_Size (*tclGetCharLength) (Tcl_Obj *objPtr); /* 670 */ @@ -2769,9 +2769,9 @@ typedef struct TclStubs { Tcl_Command (*tcl_CreateObjCommand2) (Tcl_Interp *interp, const char *cmdName, Tcl_ObjCmdProc2 *proc2, void *clientData, Tcl_CmdDeleteProc *deleteProc); /* 676 */ Tcl_Trace (*tcl_CreateObjTrace2) (Tcl_Interp *interp, Tcl_Size level, int flags, Tcl_CmdObjTraceProc2 *objProc2, void *clientData, Tcl_CmdObjTraceDeleteProc *delProc); /* 677 */ Tcl_Command (*tcl_NRCreateCommand2) (Tcl_Interp *interp, const char *cmdName, Tcl_ObjCmdProc2 *proc, Tcl_ObjCmdProc2 *nreProc2, void *clientData, Tcl_CmdDeleteProc *deleteProc); /* 678 */ - int (*tcl_NRCallObjProc2) (Tcl_Interp *interp, Tcl_ObjCmdProc2 *objProc2, void *clientData, size_t objc, Tcl_Obj *const objv[]); /* 679 */ + int (*tcl_NRCallObjProc2) (Tcl_Interp *interp, Tcl_ObjCmdProc2 *objProc2, void *clientData, ptrdiff_t objc, Tcl_Obj *const objv[]); /* 679 */ int (*tcl_GetNumberFromObj) (Tcl_Interp *interp, Tcl_Obj *objPtr, void **clientDataPtr, int *typePtr); /* 680 */ - int (*tcl_GetNumber) (Tcl_Interp *interp, const char *bytes, size_t numBytes, void **clientDataPtr, int *typePtr); /* 681 */ + int (*tcl_GetNumber) (Tcl_Interp *interp, const char *bytes, ptrdiff_t numBytes, void **clientDataPtr, int *typePtr); /* 681 */ int (*tcl_RemoveChannelMode) (Tcl_Interp *interp, Tcl_Channel chan, int mode); /* 682 */ Tcl_Size (*tcl_GetEncodingNulLength) (Tcl_Encoding encoding); /* 683 */ int (*tcl_GetWideUIntFromObj) (Tcl_Interp *interp, Tcl_Obj *objPtr, Tcl_WideUInt *uwidePtr); /* 684 */ @@ -4397,7 +4397,7 @@ extern const TclStubs *tclStubsPtr; #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))) + (sizeof(*(sizePtr)) <= sizeof(int) ? tclStubsPtr->tclGetBytesFromObj(interp, objPtr, (int *)(sizePtr)) : tclStubsPtr->tcl_GetBytesFromObj(interp, objPtr, (ptrdiff_t *)(sizePtr))) #define Tcl_GetIndexFromObjStruct(interp, objPtr, tablePtr, offset, msg, flags, indexPtr) \ (tclStubsPtr->tcl_GetIndexFromObjStruct((interp), (objPtr), (tablePtr), (offset), (msg), (flags)|(int)(sizeof(*(indexPtr))<<1), (indexPtr))) #define Tcl_GetBooleanFromObj(interp, objPtr, boolPtr) \ @@ -4408,15 +4408,15 @@ extern const TclStubs *tclStubsPtr; Tcl_GetBool(interp, src, (TCL_NULL_OK-2)&(int)sizeof((*(boolPtr))), (char *)(boolPtr))) #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))) + (sizeof(*(sizePtr)) <= sizeof(int) ? tclStubsPtr->tcl_GetStringFromObj(objPtr, (int *)(sizePtr)) : tclStubsPtr->tclGetStringFromObj(objPtr, (ptrdiff_t *)(sizePtr))) #define Tcl_GetByteArrayFromObj(objPtr, sizePtr) \ - (sizeof(*(sizePtr)) <= sizeof(int) ? tclStubsPtr->tcl_GetByteArrayFromObj(objPtr, (int *)(sizePtr)) : tclStubsPtr->tclGetByteArrayFromObj(objPtr, (size_t *)(sizePtr))) + (sizeof(*(sizePtr)) <= sizeof(int) ? tclStubsPtr->tcl_GetByteArrayFromObj(objPtr, (int *)(sizePtr)) : tclStubsPtr->tclGetByteArrayFromObj(objPtr, (ptrdiff_t *)(sizePtr))) #define Tcl_GetUnicodeFromObj(objPtr, sizePtr) \ - (sizeof(*(sizePtr)) <= sizeof(int) ? tclStubsPtr->tcl_GetUnicodeFromObj(objPtr, (int *)(sizePtr)) : tclStubsPtr->tclGetUnicodeFromObj(objPtr, (size_t *)(sizePtr))) + (sizeof(*(sizePtr)) <= sizeof(int) ? tclStubsPtr->tcl_GetUnicodeFromObj(objPtr, (int *)(sizePtr)) : tclStubsPtr->tclGetUnicodeFromObj(objPtr, (ptrdiff_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))) + (sizeof(*(sizePtr)) <= sizeof(int) ? (TclGetBytesFromObj)(interp, objPtr, (int *)(sizePtr)) : (Tcl_GetBytesFromObj)(interp, objPtr, (ptrdiff_t *)(sizePtr))) #define Tcl_GetIndexFromObjStruct(interp, objPtr, tablePtr, offset, msg, flags, indexPtr) \ ((Tcl_GetIndexFromObjStruct)((interp), (objPtr), (tablePtr), (offset), (msg), (flags)|(int)(sizeof(*(indexPtr))<<1), (indexPtr))) #define Tcl_GetBooleanFromObj(interp, objPtr, boolPtr) \ @@ -4427,11 +4427,11 @@ extern const TclStubs *tclStubsPtr; Tcl_GetBool(interp, src, (TCL_NULL_OK-2)&(int)sizeof((*(boolPtr))), (char *)(boolPtr))) #ifdef TCL_NO_DEPRECATED #define Tcl_GetStringFromObj(objPtr, sizePtr) \ - (sizeof(*(sizePtr)) <= sizeof(int) ? (Tcl_GetStringFromObj)(objPtr, (int *)(sizePtr)) : (TclGetStringFromObj)(objPtr, (size_t *)(sizePtr))) + (sizeof(*(sizePtr)) <= sizeof(int) ? (Tcl_GetStringFromObj)(objPtr, (int *)(sizePtr)) : (TclGetStringFromObj)(objPtr, (ptrdiff_t *)(sizePtr))) #define Tcl_GetByteArrayFromObj(objPtr, sizePtr) \ - (sizeof(*(sizePtr)) <= sizeof(int) ? (Tcl_GetByteArrayFromObj)(objPtr, (int *)(sizePtr)) : TclGetByteArrayFromObj(objPtr, (size_t *)(sizePtr))) + (sizeof(*(sizePtr)) <= sizeof(int) ? (Tcl_GetByteArrayFromObj)(objPtr, (int *)(sizePtr)) : TclGetByteArrayFromObj(objPtr, (ptrdiff_t *)(sizePtr))) #define Tcl_GetUnicodeFromObj(objPtr, sizePtr) \ - (sizeof(*(sizePtr)) <= sizeof(int) ? (Tcl_GetUnicodeFromObj)(objPtr, (int *)(sizePtr)) : TclGetUnicodeFromObj(objPtr, (size_t *)(sizePtr))) + (sizeof(*(sizePtr)) <= sizeof(int) ? (Tcl_GetUnicodeFromObj)(objPtr, (int *)(sizePtr)) : TclGetUnicodeFromObj(objPtr, (ptrdiff_t *)(sizePtr))) #endif #endif @@ -4488,31 +4488,31 @@ extern const TclStubs *tclStubsPtr; # undef Tcl_ListObjGetElements # define Tcl_ListObjGetElements(interp, listPtr, objcPtr, objvPtr) (sizeof(*(objcPtr)) == sizeof(int) \ ? tclStubsPtr->tcl_ListObjGetElements((interp), (listPtr), (int *)(void *)(objcPtr), (objvPtr)) \ - : tclStubsPtr->tclListObjGetElements((interp), (listPtr), (size_t *)(void *)(objcPtr), (objvPtr))) + : tclStubsPtr->tclListObjGetElements((interp), (listPtr), (ptrdiff_t *)(void *)(objcPtr), (objvPtr))) # undef Tcl_ListObjLength # define Tcl_ListObjLength(interp, listPtr, lengthPtr) (sizeof(*(lengthPtr)) == sizeof(int) \ ? tclStubsPtr->tcl_ListObjLength((interp), (listPtr), (int *)(void *)(lengthPtr)) \ - : tclStubsPtr->tclListObjLength((interp), (listPtr), (size_t *)(void *)(lengthPtr))) + : tclStubsPtr->tclListObjLength((interp), (listPtr), (ptrdiff_t *)(void *)(lengthPtr))) # undef Tcl_DictObjSize # define Tcl_DictObjSize(interp, dictPtr, sizePtr) (sizeof(*(sizePtr)) == sizeof(int) \ ? tclStubsPtr->tcl_DictObjSize((interp), (dictPtr), (int *)(void *)(sizePtr)) \ - : tclStubsPtr->tclDictObjSize((interp), (dictPtr), (size_t *)(void *)(sizePtr))) + : tclStubsPtr->tclDictObjSize((interp), (dictPtr), (ptrdiff_t *)(void *)(sizePtr))) # undef Tcl_SplitList # define Tcl_SplitList(interp, listStr, argcPtr, argvPtr) (sizeof(*(argcPtr)) == sizeof(int) \ ? tclStubsPtr->tcl_SplitList((interp), (listStr), (int *)(void *)(argcPtr), (argvPtr)) \ - : tclStubsPtr->tclSplitList((interp), (listStr), (size_t *)(void *)(argcPtr), (argvPtr))) + : tclStubsPtr->tclSplitList((interp), (listStr), (ptrdiff_t *)(void *)(argcPtr), (argvPtr))) # undef Tcl_SplitPath # define Tcl_SplitPath(path, argcPtr, argvPtr) (sizeof(*(argcPtr)) == sizeof(int) \ ? tclStubsPtr->tcl_SplitPath((path), (int *)(void *)(argcPtr), (argvPtr)) \ - : tclStubsPtr->tclSplitPath((path), (size_t *)(void *)(argcPtr), (argvPtr))) + : tclStubsPtr->tclSplitPath((path), (ptrdiff_t *)(void *)(argcPtr), (argvPtr))) # undef Tcl_FSSplitPath # define Tcl_FSSplitPath(pathPtr, lenPtr) (sizeof(*(lenPtr)) == sizeof(int) \ ? tclStubsPtr->tcl_FSSplitPath((pathPtr), (int *)(void *)(lenPtr)) \ - : tclStubsPtr->tclFSSplitPath((pathPtr), (size_t *)(void *)(lenPtr))) + : tclStubsPtr->tclFSSplitPath((pathPtr), (ptrdiff_t *)(void *)(lenPtr))) # undef Tcl_ParseArgsObjv # define Tcl_ParseArgsObjv(interp, argTable, objcPtr, objv, remObjv) (sizeof(*(objcPtr)) == sizeof(int) \ ? tclStubsPtr->tcl_ParseArgsObjv((interp), (argTable), (int *)(void *)(objcPtr), (objv), (remObjv)) \ - : tclStubsPtr->tclParseArgsObjv((interp), (argTable), (size_t *)(void *)(objcPtr), (objv), (remObjv))) + : tclStubsPtr->tclParseArgsObjv((interp), (argTable), (ptrdiff_t *)(void *)(objcPtr), (objv), (remObjv))) #endif /* TCL_NO_DEPRECATED */ #else # define Tcl_WCharToUtfDString (sizeof(wchar_t) != sizeof(short) \ @@ -4530,25 +4530,25 @@ extern const TclStubs *tclStubsPtr; #ifdef TCL_NO_DEPRECATED # define Tcl_ListObjGetElements(interp, listPtr, objcPtr, objvPtr) (sizeof(*(objcPtr)) == sizeof(int) \ ? (Tcl_ListObjGetElements)((interp), (listPtr), (int *)(void *)(objcPtr), (objvPtr)) \ - : TclListObjGetElements((interp), (listPtr), (size_t *)(void *)(objcPtr), (objvPtr))) + : TclListObjGetElements((interp), (listPtr), (ptrdiff_t *)(void *)(objcPtr), (objvPtr))) # define Tcl_ListObjLength(interp, listPtr, lengthPtr) (sizeof(*(lengthPtr)) == sizeof(int) \ ? (Tcl_ListObjLength)((interp), (listPtr), (int *)(void *)(lengthPtr)) \ - : TclListObjLength((interp), (listPtr), (size_t *)(void *)(lengthPtr))) + : TclListObjLength((interp), (listPtr), (ptrdiff_t *)(void *)(lengthPtr))) # define Tcl_DictObjSize(interp, dictPtr, sizePtr) (sizeof(*(sizePtr)) == sizeof(int) \ ? (Tcl_DictObjSize)((interp), (dictPtr), (int *)(void *)(sizePtr)) \ - : TclDictObjSize((interp), (dictPtr), (size_t *)(void *)(sizePtr))) + : TclDictObjSize((interp), (dictPtr), (ptrdiff_t *)(void *)(sizePtr))) # define Tcl_SplitList(interp, listStr, argcPtr, argvPtr) (sizeof(*(argcPtr)) == sizeof(int) \ ? (Tcl_SplitList)((interp), (listStr), (int *)(void *)(argcPtr), (argvPtr)) \ - : TclSplitList((interp), (listStr), (size_t *)(void *)(argcPtr), (argvPtr))) + : TclSplitList((interp), (listStr), (ptrdiff_t *)(void *)(argcPtr), (argvPtr))) # define Tcl_SplitPath(path, argcPtr, argvPtr) (sizeof(*(argcPtr)) == sizeof(int) \ ? (Tcl_SplitPath)((path), (int *)(void *)(argcPtr), (argvPtr)) \ - : TclSplitPath((path), (size_t *)(void *)(argcPtr), (argvPtr))) + : TclSplitPath((path), (ptrdiff_t *)(void *)(argcPtr), (argvPtr))) # define Tcl_FSSplitPath(pathPtr, lenPtr) (sizeof(*(lenPtr)) == sizeof(int) \ ? (Tcl_FSSplitPath)((pathPtr), (int *)(void *)(lenPtr)) \ - : TclFSSplitPath((pathPtr), (size_t *)(void *)(lenPtr))) + : TclFSSplitPath((pathPtr), (ptrdiff_t *)(void *)(lenPtr))) # define Tcl_ParseArgsObjv(interp, argTable, objcPtr, objv, remObjv) (sizeof(*(objcPtr)) == sizeof(int) \ ? (Tcl_ParseArgsObjv)((interp), (argTable), (int *)(void *)(objcPtr), (objv), (remObjv)) \ - : TclParseArgsObjv((interp), (argTable), (size_t *)(void *)(objcPtr), (objv), (remObjv))) + : TclParseArgsObjv((interp), (argTable), (ptrdiff_t *)(void *)(objcPtr), (objv), (remObjv))) #endif /* TCL_NO_DEPRECATED */ #endif diff --git a/generic/tclObj.c b/generic/tclObj.c index 233c677..aeaa0cd 100644 --- a/generic/tclObj.c +++ b/generic/tclObj.c @@ -1721,7 +1721,7 @@ char * TclGetStringFromObj( Tcl_Obj *objPtr, /* Object whose string rep byte pointer should * be returned. */ - size_t *lengthPtr) /* If non-NULL, the location where the string + ptrdiff_t *lengthPtr) /* If non-NULL, the location where the string * rep's byte array length should * be stored. * If NULL, no length is stored. */ { @@ -4066,7 +4066,7 @@ int Tcl_GetNumber( Tcl_Interp *interp, const char *bytes, - size_t numBytes, + ptrdiff_t numBytes, void **clientDataPtr, int *typePtr) { @@ -4080,7 +4080,7 @@ Tcl_GetNumber( bytes = &tclEmptyString; numBytes = 0; } - if (numBytes == (size_t)TCL_INDEX_NONE) { + if (numBytes < 0) { numBytes = strlen(bytes); } if (numBytes > INT_MAX) { diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index 340ef50..a6ed49f 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -987,7 +987,7 @@ unsigned short * TclGetUnicodeFromObj( Tcl_Obj *objPtr, /* The object to find the unicode string * for. */ - size_t *lengthPtr) /* If non-NULL, the location where the string + ptrdiff_t *lengthPtr) /* If non-NULL, the location where the string * rep's unichar length should be stored. If * NULL, no length is stored. */ { diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c index 05a829c..3a51f7e 100644 --- a/generic/tclStubInit.c +++ b/generic/tclStubInit.c @@ -138,7 +138,7 @@ static const char *TclUtfPrev(const char *src, const char *start) { } int TclListObjGetElements(Tcl_Interp *interp, Tcl_Obj *listPtr, - size_t *objcPtr, Tcl_Obj ***objvPtr) { + ptrdiff_t *objcPtr, Tcl_Obj ***objvPtr) { int n, result = Tcl_ListObjGetElements(interp, listPtr, &n, objvPtr); if ((result == TCL_OK) && objcPtr) { *objcPtr = n; @@ -146,7 +146,7 @@ int TclListObjGetElements(Tcl_Interp *interp, Tcl_Obj *listPtr, return result; } int TclListObjLength(Tcl_Interp *interp, Tcl_Obj *listPtr, - size_t *lengthPtr) { + ptrdiff_t *lengthPtr) { int n; int result = Tcl_ListObjLength(interp, listPtr, &n); if ((result == TCL_OK) && lengthPtr) { @@ -155,14 +155,14 @@ int TclListObjLength(Tcl_Interp *interp, Tcl_Obj *listPtr, return result; } int TclDictObjSize(Tcl_Interp *interp, Tcl_Obj *dictPtr, - size_t *sizePtr) { + ptrdiff_t *sizePtr) { int n, result = Tcl_DictObjSize(interp, dictPtr, &n); if ((result == TCL_OK) && sizePtr) { *sizePtr = n; } return result; } -int TclSplitList(Tcl_Interp *interp, const char *listStr, size_t *argcPtr, +int TclSplitList(Tcl_Interp *interp, const char *listStr, ptrdiff_t *argcPtr, const char ***argvPtr) { int n; int result = Tcl_SplitList(interp, listStr, &n, argvPtr); @@ -171,14 +171,14 @@ int TclSplitList(Tcl_Interp *interp, const char *listStr, size_t *argcPtr, } return result; } -void TclSplitPath(const char *path, size_t *argcPtr, const char ***argvPtr) { +void TclSplitPath(const char *path, ptrdiff_t *argcPtr, const char ***argvPtr) { int n; Tcl_SplitPath(path, &n, argvPtr); if (argcPtr) { *argcPtr = n; } } -Tcl_Obj *TclFSSplitPath(Tcl_Obj *pathPtr, size_t *lenPtr) { +Tcl_Obj *TclFSSplitPath(Tcl_Obj *pathPtr, ptrdiff_t *lenPtr) { int n; Tcl_Obj *result = Tcl_FSSplitPath(pathPtr, &n); if (result && lenPtr) { @@ -187,7 +187,7 @@ Tcl_Obj *TclFSSplitPath(Tcl_Obj *pathPtr, size_t *lenPtr) { return result; } int TclParseArgsObjv(Tcl_Interp *interp, - const Tcl_ArgvInfo *argTable, size_t *objcPtr, Tcl_Obj *const *objv, + const Tcl_ArgvInfo *argTable, ptrdiff_t *objcPtr, Tcl_Obj *const *objv, Tcl_Obj ***remObjv) { int n, result; if (*objcPtr > INT_MAX) { -- cgit v0.12