From f8ae8cc375adc04ed8d810255e0d282cce9ae35e Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 1 Apr 2020 05:37:15 +0000 Subject: Adapt [testbytestring] to use TclGetBytesFromObj, which must be in internal stubs to make that work. --- generic/tclInt.decls | 5 +++++ generic/tclInt.h | 2 -- generic/tclIntDecls.h | 10 ++++++++-- generic/tclStubInit.c | 3 ++- generic/tclTest.c | 6 +++--- 5 files changed, 18 insertions(+), 8 deletions(-) diff --git a/generic/tclInt.decls b/generic/tclInt.decls index bdc7288..948ec26 100644 --- a/generic/tclInt.decls +++ b/generic/tclInt.decls @@ -1036,6 +1036,11 @@ declare 258 { } declare 259 { + unsigned char *TclGetBytesFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr, + int *lengthPtr) +} + +declare 260 { void TclUnusedStubEntry(void) } diff --git a/generic/tclInt.h b/generic/tclInt.h index 363d126..93596a8 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -3026,8 +3026,6 @@ MODULE_SCOPE int TclNREvalFile(Tcl_Interp *interp, Tcl_Obj *pathPtr, MODULE_SCOPE void TclFSUnloadTempFile(Tcl_LoadHandle loadHandle); MODULE_SCOPE int * TclGetAsyncReadyPtr(void); MODULE_SCOPE Tcl_Obj * TclGetBgErrorHandler(Tcl_Interp *interp); -MODULE_SCOPE unsigned char * TclGetBytesFromObj(Tcl_Interp *interp, - Tcl_Obj *objPtr, int *lengthPtr); MODULE_SCOPE int TclGetChannelFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr, Tcl_Channel *chanPtr, int *modePtr, int flags); diff --git a/generic/tclIntDecls.h b/generic/tclIntDecls.h index 8ba0c4c..2426326 100644 --- a/generic/tclIntDecls.h +++ b/generic/tclIntDecls.h @@ -659,6 +659,9 @@ EXTERN void TclStaticPackage(Tcl_Interp *interp, EXTERN Tcl_Obj * TclpCreateTemporaryDirectory(Tcl_Obj *dirObj, Tcl_Obj *basenameObj); /* 259 */ +EXTERN unsigned char * TclGetBytesFromObj(Tcl_Interp *interp, + Tcl_Obj *objPtr, int *lengthPtr); +/* 260 */ EXTERN void TclUnusedStubEntry(void); typedef struct TclIntStubs { @@ -924,7 +927,8 @@ typedef struct TclIntStubs { int (*tclPtrUnsetVar) (Tcl_Interp *interp, Tcl_Var varPtr, Tcl_Var arrayPtr, Tcl_Obj *part1Ptr, Tcl_Obj *part2Ptr, const int flags); /* 256 */ void (*tclStaticPackage) (Tcl_Interp *interp, const char *pkgName, Tcl_PackageInitProc *initProc, Tcl_PackageInitProc *safeInitProc); /* 257 */ Tcl_Obj * (*tclpCreateTemporaryDirectory) (Tcl_Obj *dirObj, Tcl_Obj *basenameObj); /* 258 */ - void (*tclUnusedStubEntry) (void); /* 259 */ + unsigned char * (*tclGetBytesFromObj) (Tcl_Interp *interp, Tcl_Obj *objPtr, int *lengthPtr); /* 259 */ + void (*tclUnusedStubEntry) (void); /* 260 */ } TclIntStubs; extern const TclIntStubs *tclIntStubsPtr; @@ -1370,8 +1374,10 @@ extern const TclIntStubs *tclIntStubsPtr; (tclIntStubsPtr->tclStaticPackage) /* 257 */ #define TclpCreateTemporaryDirectory \ (tclIntStubsPtr->tclpCreateTemporaryDirectory) /* 258 */ +#define TclGetBytesFromObj \ + (tclIntStubsPtr->tclGetBytesFromObj) /* 259 */ #define TclUnusedStubEntry \ - (tclIntStubsPtr->tclUnusedStubEntry) /* 259 */ + (tclIntStubsPtr->tclUnusedStubEntry) /* 260 */ #endif /* defined(USE_TCL_STUBS) */ diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c index b519209..2d2bc63 100644 --- a/generic/tclStubInit.c +++ b/generic/tclStubInit.c @@ -983,7 +983,8 @@ static const TclIntStubs tclIntStubs = { TclPtrUnsetVar, /* 256 */ TclStaticPackage, /* 257 */ TclpCreateTemporaryDirectory, /* 258 */ - TclUnusedStubEntry, /* 259 */ + TclGetBytesFromObj, /* 259 */ + TclUnusedStubEntry, /* 260 */ }; static const TclIntPlatStubs tclIntPlatStubs = { diff --git a/generic/tclTest.c b/generic/tclTest.c index 0166522..17e59ff 100644 --- a/generic/tclTest.c +++ b/generic/tclTest.c @@ -5068,9 +5068,9 @@ TestbytestringObjCmd( Tcl_WrongNumArgs(interp, 1, objv, "bytearray"); return TCL_ERROR; } - p = (const char *)Tcl_GetByteArrayFromObj(objv[1], &n); - if ((p == NULL) || !Tcl_FetchIntRep(objv[1], properByteArrayType)) { - Tcl_AppendResult(interp, "testbytestring expects bytes", NULL); + + p = (const char *)TclGetBytesFromObj(interp, objv[1], &n); + if (p == NULL) { return TCL_ERROR; } Tcl_SetObjResult(interp, Tcl_NewStringObj(p, n)); -- cgit v0.12