diff options
| author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2019-11-15 14:45:28 (GMT) |
|---|---|---|
| committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2019-11-15 14:45:28 (GMT) |
| commit | c44fa310d2d8952b3e6391e5c6691c5e857620db (patch) | |
| tree | e55a195236c2a0c18ca8e29e4e361048f4bc4b20 | |
| parent | f3c59889969ea8de9b422884a59825b0a9f3e950 (diff) | |
| parent | 521b33f6ec17381c19722e73043934c1dc81bea4 (diff) | |
| download | tcl-c44fa310d2d8952b3e6391e5c6691c5e857620db.zip tcl-c44fa310d2d8952b3e6391e5c6691c5e857620db.tar.gz tcl-c44fa310d2d8952b3e6391e5c6691c5e857620db.tar.bz2 | |
Merge 8.7
| -rw-r--r-- | generic/tcl.decls | 7 | ||||
| -rw-r--r-- | generic/tcl.h | 19 | ||||
| -rw-r--r-- | generic/tclDecls.h | 8 | ||||
| -rw-r--r-- | generic/tclInt.h | 1 | ||||
| -rw-r--r-- | generic/tclStubInit.c | 2 |
5 files changed, 28 insertions, 9 deletions
diff --git a/generic/tcl.decls b/generic/tcl.decls index 8b16a1b..2c72914 100644 --- a/generic/tcl.decls +++ b/generic/tcl.decls @@ -134,10 +134,9 @@ declare 28 { declare 29 { Tcl_Obj *Tcl_DuplicateObj(Tcl_Obj *objPtr) } -# Removed in 9.0 -#declare 30 { -# void TclFreeObj(Tcl_Obj *objPtr) -#} +declare 30 { + void TclFreeObj(Tcl_Obj *objPtr) +} declare 31 { int Tcl_GetBoolean(Tcl_Interp *interp, const char *src, int *boolPtr) } diff --git a/generic/tcl.h b/generic/tcl.h index c88ddde..f5bb8b9 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -2281,6 +2281,25 @@ EXTERN int TclZipfs_AppHook(int *argc, char ***argv); # undef Tcl_IsShared # define Tcl_IsShared(objPtr) \ Tcl_DbIsShared(objPtr, __FILE__, __LINE__) +#else +# undef Tcl_IncrRefCount +# define Tcl_IncrRefCount(objPtr) \ + ++(objPtr)->refCount + /* + * Use do/while0 idiom for optimum correctness without compiler warnings. + * http://c2.com/cgi/wiki?TrivialDoWhileLoop + */ +# undef Tcl_DecrRefCount +# define Tcl_DecrRefCount(objPtr) \ + do { \ + Tcl_Obj *_objPtr = (objPtr); \ + if ((_objPtr)->refCount-- <= 1) { \ + TclFreeObj(_objPtr); \ + } \ + } while(0) +# undef Tcl_IsShared +# define Tcl_IsShared(objPtr) \ + ((objPtr)->refCount > 1) #endif /* diff --git a/generic/tclDecls.h b/generic/tclDecls.h index 210a094..e525b26 100644 --- a/generic/tclDecls.h +++ b/generic/tclDecls.h @@ -136,7 +136,8 @@ EXTERN Tcl_Obj * Tcl_DbNewStringObj(const char *bytes, size_t length, const char *file, int line); /* 29 */ EXTERN Tcl_Obj * Tcl_DuplicateObj(Tcl_Obj *objPtr); -/* Slot 30 is reserved */ +/* 30 */ +EXTERN void TclFreeObj(Tcl_Obj *objPtr); /* 31 */ EXTERN int Tcl_GetBoolean(Tcl_Interp *interp, const char *src, int *boolPtr); @@ -1823,7 +1824,7 @@ typedef struct TclStubs { Tcl_Obj * (*tcl_DbNewObj) (const char *file, int line); /* 27 */ Tcl_Obj * (*tcl_DbNewStringObj) (const char *bytes, size_t length, const char *file, int line); /* 28 */ Tcl_Obj * (*tcl_DuplicateObj) (Tcl_Obj *objPtr); /* 29 */ - void (*reserved30)(void); + void (*tclFreeObj) (Tcl_Obj *objPtr); /* 30 */ int (*tcl_GetBoolean) (Tcl_Interp *interp, const char *src, int *boolPtr); /* 31 */ int (*tcl_GetBooleanFromObj) (Tcl_Interp *interp, Tcl_Obj *objPtr, int *boolPtr); /* 32 */ unsigned char * (*tcl_GetByteArrayFromObj) (Tcl_Obj *objPtr, int *lengthPtr); /* 33 */ @@ -2534,7 +2535,8 @@ extern const TclStubs *tclStubsPtr; (tclStubsPtr->tcl_DbNewStringObj) /* 28 */ #define Tcl_DuplicateObj \ (tclStubsPtr->tcl_DuplicateObj) /* 29 */ -/* Slot 30 is reserved */ +#define TclFreeObj \ + (tclStubsPtr->tclFreeObj) /* 30 */ #define Tcl_GetBoolean \ (tclStubsPtr->tcl_GetBoolean) /* 31 */ #define Tcl_GetBooleanFromObj \ diff --git a/generic/tclInt.h b/generic/tclInt.h index 0476a83..c75fd52 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -4045,7 +4045,6 @@ MODULE_SCOPE int TclObjCallVarTraces(Interp *iPtr, Var *arrayPtr, */ MODULE_SCOPE int TclCompareObjKeys(void *keyPtr, Tcl_HashEntry *hPtr); -MODULE_SCOPE void TclFreeObj(Tcl_Obj *objPtr); MODULE_SCOPE void TclFreeObjEntry(Tcl_HashEntry *hPtr); MODULE_SCOPE TCL_HASH_TYPE TclHashObjKey(Tcl_HashTable *tablePtr, void *keyPtr); diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c index 5bdbb47..6c11147 100644 --- a/generic/tclStubInit.c +++ b/generic/tclStubInit.c @@ -739,7 +739,7 @@ const TclStubs tclStubs = { Tcl_DbNewObj, /* 27 */ Tcl_DbNewStringObj, /* 28 */ Tcl_DuplicateObj, /* 29 */ - 0, /* 30 */ + TclFreeObj, /* 30 */ Tcl_GetBoolean, /* 31 */ Tcl_GetBooleanFromObj, /* 32 */ Tcl_GetByteArrayFromObj, /* 33 */ |
