summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--generic/tclDecls.h26
-rw-r--r--generic/tclInt.h7
-rw-r--r--generic/tclObj.c1
-rw-r--r--generic/tclStubInit.c4
4 files changed, 20 insertions, 18 deletions
diff --git a/generic/tclDecls.h b/generic/tclDecls.h
index a2b0ec1..2acbb38 100644
--- a/generic/tclDecls.h
+++ b/generic/tclDecls.h
@@ -4158,19 +4158,17 @@ extern const TclStubs *tclStubsPtr;
# define Tcl_GetMaster Tcl_GetParent
#endif
-#ifdef USE_TCL_STUBS
- /* Protect those 10 functions, make them useless through the stub table */
-# undef TclGetStringFromObj
-# undef TclGetBytesFromObj
-# undef TclGetUnicodeFromObj
-# undef TclListObjGetElements
-# undef TclListObjLength
-# undef TclDictObjSize
-# undef TclSplitList
-# undef TclSplitPath
-# undef TclFSSplitPath
-# undef TclParseArgsObjv
-#endif
+/* Protect those 10 functions, make them useless through the stub table */
+#undef TclGetStringFromObj
+#undef TclGetBytesFromObj
+#undef TclGetUnicodeFromObj
+#undef TclListObjGetElements
+#undef TclListObjLength
+#undef TclDictObjSize
+#undef TclSplitList
+#undef TclSplitPath
+#undef TclFSSplitPath
+#undef TclParseArgsObjv
#if TCL_MAJOR_VERSION < 9
/* TIP #627 for 8.7 */
@@ -4236,7 +4234,7 @@ extern const TclStubs *tclStubsPtr;
TclGetBytesFromObj((interp), (objPtr), (sizePtr)) : \
(Tcl_GetBytesFromObj)((interp), (objPtr), (Tcl_Size *)(void *)(sizePtr)))
# define Tcl_GetStringFromObj(objPtr, sizePtr) (sizeof(*(sizePtr)) <= sizeof(int) ? \
- TclGetStringFromObj((objPtr), (sizePtr)) : \
+ (TclGetStringFromObj)((objPtr), (sizePtr)) : \
(Tcl_GetStringFromObj)((objPtr), (Tcl_Size *)(void *)(sizePtr)))
# define Tcl_GetUnicodeFromObj(objPtr, sizePtr) (sizeof(*(sizePtr)) <= sizeof(int) ? \
TclGetUnicodeFromObj((objPtr), (sizePtr)) : \
diff --git a/generic/tclInt.h b/generic/tclInt.h
index 14662b7..1fa6786 100644
--- a/generic/tclInt.h
+++ b/generic/tclInt.h
@@ -4396,6 +4396,11 @@ MODULE_SCOPE void TclDbInitNewObj(Tcl_Obj *objPtr, const char *file,
#define TclGetString(objPtr) \
((objPtr)->bytes? (objPtr)->bytes : Tcl_GetString(objPtr))
+#define TclGetStringFromObj(objPtr, lenPtr) \
+ ((objPtr)->bytes \
+ ? (*(lenPtr) = (objPtr)->length, (objPtr)->bytes) \
+ : (Tcl_GetStringFromObj)((objPtr), (lenPtr)))
+
/*
*----------------------------------------------------------------
* Macro used by the Tcl core to clean out an object's internal
@@ -4587,7 +4592,7 @@ MODULE_SCOPE const TclFileAttrProcs tclpFileAttrProcs[];
#define TclNumUtfCharsM(numChars, bytes, numBytes) \
do { \
- Tcl_Size _count = 0, _i = (numBytes); \
+ Tcl_Size _count, _i = (numBytes); \
unsigned char *_str = (unsigned char *) (bytes); \
while (_i > 0 && (*_str < 0xC0)) { _i--; _str++; } \
_count = (numBytes) - _i; \
diff --git a/generic/tclObj.c b/generic/tclObj.c
index 17cb6a4..5dd4545 100644
--- a/generic/tclObj.c
+++ b/generic/tclObj.c
@@ -1660,6 +1660,7 @@ Tcl_GetString(
*/
#if !defined(TCL_NO_DEPRECATED)
+#undef TclGetStringFromObj
char *
TclGetStringFromObj(
Tcl_Obj *objPtr, /* Object whose string rep byte pointer should
diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c
index 9072796..b48ec1b 100644
--- a/generic/tclStubInit.c
+++ b/generic/tclStubInit.c
@@ -73,10 +73,8 @@
# undef Tcl_WinConvertError
# define Tcl_WinConvertError 0
#endif
+#undef TclGetStringFromObj
#if defined(TCL_NO_DEPRECATED)
-# undef TclGetStringFromObj
-# undef TclGetBytesFromObj
-# undef TclGetUnicodeFromObj
# define TclGetStringFromObj 0
# define TclGetBytesFromObj 0
# define TclGetUnicodeFromObj 0