From ad861a0433fe3325ce081e6df2b40ed7fd670fe9 Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Mon, 14 Sep 2020 10:33:31 +0000 Subject: Prevent the usage of the term safe/unsafe child --- doc/selection.n | 2 +- generic/tkImgBmap.c | 2 +- generic/tkImgPNG.c | 4 +- generic/tkImgPPM.c | 4 +- generic/tkInt.h | 6 +-- generic/tkMain.c | 8 +++- generic/tkOption.c | 78 ++++++++++++++++++------------------- library/safetk.tcl | 2 +- macosx/ttkMacOSXTheme.c | 2 +- tests/safePrimarySelection.test | 86 ++++++++++++++++++++--------------------- tests/unixEmbed.test | 2 +- 11 files changed, 101 insertions(+), 95 deletions(-) diff --git a/doc/selection.n b/doc/selection.n index bb4cf09..a2c5ae5 100644 --- a/doc/selection.n +++ b/doc/selection.n @@ -150,7 +150,7 @@ A GUI event, for example \fB<>\fR, can copy the \fBPRIMARY\fR se .PP On X11, the \fBPRIMARY\fR selection is a system-wide feature of the X server, allowing communication between different processes that are X11 clients. .PP -On Windows, the \fBPRIMARY\fR selection is not provided by the system, but only by Tk, and so it is shared only between windows of a parent interpreter and its unsafe child interpreters. It is not shared between interpreters in different processes or different threads. Each parent interpreter has a separate \fBPRIMARY\fR selection that is shared only with its unsafe childs. +On Windows, the \fBPRIMARY\fR selection is not provided by the system, but only by Tk, and so it is shared only between windows of a parent interpreter and its child interpreters. It is not shared between interpreters in different processes or different threads. Each parent interpreter has a separate \fBPRIMARY\fR selection that is shared only with its child interpreters which are not safe interpreters. .PP .SH SECURITY .PP diff --git a/generic/tkImgBmap.c b/generic/tkImgBmap.c index c6ab05d..04027b0 100644 --- a/generic/tkImgBmap.c +++ b/generic/tkImgBmap.c @@ -1083,7 +1083,7 @@ GetByte( int size; size = Tcl_Read(chan, &buffer, 1); - if (size <= 0) { + if (size != 1) { return EOF; } else { return buffer; diff --git a/generic/tkImgPNG.c b/generic/tkImgPNG.c index c6f2dcb..07b4f8b 100644 --- a/generic/tkImgPNG.c +++ b/generic/tkImgPNG.c @@ -626,7 +626,7 @@ ReadData( int blockSz = PNG_MIN(destSz, PNG_BLOCK_SZ); blockSz = Tcl_Read(pngPtr->channel, (char *)destPtr, blockSz); - if (blockSz < 0) { + if (blockSz == -1) { /* TODO: failure info... */ Tcl_SetObjResult(interp, Tcl_ObjPrintf( "channel read failed: %s", Tcl_PosixError(interp))); @@ -2884,7 +2884,7 @@ WriteData( } memcpy(destPtr+objSz, srcPtr, srcSz); - } else if (Tcl_Write(pngPtr->channel, (const char *) srcPtr, srcSz) < 0) { + } else if (Tcl_Write(pngPtr->channel, (const char *) srcPtr, srcSz) == -1) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "write to channel failed: %s", Tcl_PosixError(interp))); return TCL_ERROR; diff --git a/generic/tkImgPPM.c b/generic/tkImgPPM.c index 6f084f0..89d4387 100644 --- a/generic/tkImgPPM.c +++ b/generic/tkImgPPM.c @@ -323,8 +323,8 @@ FileWritePPM( pixelPtr = pixLinePtr; for (w = blockPtr->width; w > 0; w--) { if ( Tcl_Write(chan,(char *)&pixelPtr[0], 1) == -1 || - Tcl_Write(chan,(char *)&pixelPtr[greenOffset],1)==-1 || - Tcl_Write(chan,(char *)&pixelPtr[blueOffset],1) ==-1) { + Tcl_Write(chan,(char *)&pixelPtr[greenOffset],1) == -1 || + Tcl_Write(chan,(char *)&pixelPtr[blueOffset],1) == -1) { goto writeerror; } pixelPtr += blockPtr->pixelSize; diff --git a/generic/tkInt.h b/generic/tkInt.h index 9f22b99..c1c9f88 100644 --- a/generic/tkInt.h +++ b/generic/tkInt.h @@ -363,9 +363,9 @@ typedef struct TkDisplay { */ Tcl_HashTable maintainHashTable; - /* Hash table that maps from a master's - * Tk_Window token to a list of slaves managed - * by that master. */ + /* Hash table that maps from a container's + * Tk_Window token to a list of windows managed + * by that container. */ int geomInit; #define TkGetGeomMaster(tkwin) (((TkWindow *)tkwin)->maintainerPtr != NULL ? \ diff --git a/generic/tkMain.c b/generic/tkMain.c index c6c9835..32006b3 100644 --- a/generic/tkMain.c +++ b/generic/tkMain.c @@ -40,6 +40,9 @@ static const char DEFAULT_PRIMARY_PROMPT[] = "% "; * to strcmp here. */ #ifdef _WIN32 +#ifdef __cplusplus +extern "C" { +#endif /* Little hack to eliminate the need for "tclInt.h" here: Just copy a small portion of TclIntPlatStubs, just enough to make it work. See [600b72bfbc] */ @@ -50,6 +53,9 @@ typedef struct { int (*tclpIsAtty) (int fd); /* 16 */ } TclIntPlatStubs; extern const TclIntPlatStubs *tclIntPlatStubsPtr; +#ifdef __cplusplus +} +#endif # include "tkWinInt.h" #else # define TCHAR char @@ -417,7 +423,7 @@ StdinProc( count = Tcl_Gets(chan, &isPtr->line); - if (count == -1 && !isPtr->gotPartial) { + if ((count == -1) && !isPtr->gotPartial) { if (isPtr->tty) { Tcl_Exit(0); } else { diff --git a/generic/tkOption.c b/generic/tkOption.c index 8aaf805..15fc405 100644 --- a/generic/tkOption.c +++ b/generic/tkOption.c @@ -254,16 +254,16 @@ Tk_AddOption( * TK_MAX_PRIO. */ { TkWindow *winPtr = ((TkWindow *) tkwin)->mainPtr->winPtr; - register ElArray **arrayPtrPtr; - register Element *elPtr; + ElArray **arrayPtrPtr; + Element *elPtr; Element newEl; - register const char *p; + const char *p; const char *field; int count, firstField; - ptrdiff_t length; + size_t length; #define TMP_SIZE 100 char tmp[TMP_SIZE+1]; - ThreadSpecificData *tsdPtr = + ThreadSpecificData *tsdPtr = (ThreadSpecificData *) Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); if (winPtr->mainPtr->optionRootPtr == NULL) { @@ -311,7 +311,7 @@ Tk_AddOption( if (length > TMP_SIZE) { length = TMP_SIZE; } - strncpy(tmp, field, (size_t) length); + strncpy(tmp, field, length); tmp[length] = 0; newEl.nameUid = Tk_GetUid(tmp); if (isupper(UCHAR(*field))) { @@ -407,11 +407,11 @@ Tk_GetOption( { Tk_Uid nameId, classId = NULL; const char *masqName; - register Element *elPtr, *bestPtr; - register int count; + Element *elPtr, *bestPtr; + int count; StackLevel *levelPtr; int stackDepth[NUM_STACKS]; - ThreadSpecificData *tsdPtr = + ThreadSpecificData *tsdPtr = (ThreadSpecificData *) Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); /* @@ -521,8 +521,8 @@ Tk_GetOption( if (masqName != NULL) { char *masqClass; Tk_Uid nodeId, winClassId, winNameId; - unsigned int classNameLength; - register Element *nodePtr, *leafPtr; + size_t classNameLength; + Element *nodePtr, *leafPtr; static const int searchOrder[] = { EXACT_NODE_NAME, WILDCARD_NODE_NAME, EXACT_NODE_CLASS, WILDCARD_NODE_CLASS, -1 @@ -534,8 +534,8 @@ Tk_GetOption( * Extract the masquerade class name from the name field. */ - classNameLength = (unsigned) (masqName - name); - masqClass = ckalloc(classNameLength + 1); + classNameLength = (size_t) (masqName - name); + masqClass = (char *)ckalloc(classNameLength + 1); strncpy(masqClass, name, classNameLength); masqClass[classNameLength] = '\0'; @@ -615,9 +615,9 @@ Tk_OptionObjCmd( int objc, /* Number of Tcl_Obj arguments. */ Tcl_Obj *const objv[]) /* Tcl_Obj arguments. */ { - Tk_Window tkwin = clientData; + Tk_Window tkwin = (Tk_Window)clientData; int index, result; - ThreadSpecificData *tsdPtr = + ThreadSpecificData *tsdPtr = (ThreadSpecificData *) Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); static const char *const optionCmds[] = { "add", "clear", "get", "readfile", NULL @@ -738,9 +738,9 @@ Tk_OptionObjCmd( void TkOptionDeadWindow( - register TkWindow *winPtr) /* Window to be cleaned up. */ + TkWindow *winPtr) /* Window to be cleaned up. */ { - ThreadSpecificData *tsdPtr = + ThreadSpecificData *tsdPtr = (ThreadSpecificData *) Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); /* @@ -796,7 +796,7 @@ TkOptionClassChanged( { int i, j, *basePtr; ElArray *arrayPtr; - ThreadSpecificData *tsdPtr = + ThreadSpecificData *tsdPtr = (ThreadSpecificData *) Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); if (winPtr->optionLevel == -1) { @@ -922,7 +922,7 @@ AddFromString( * TK_INTERACTIVE_PRIO. Must be between 0 and * TK_MAX_PRIO. */ { - register char *src, *dst; + char *src, *dst; char *name, *value; int lineNum; @@ -1115,7 +1115,7 @@ ReadOptionFile( Tcl_IncrRefCount(buffer); Tcl_SetChannelOption(NULL, chan, "-encoding", "utf-8"); bufferSize = Tcl_ReadChars(chan, buffer, -1, 0); - if (bufferSize < 0) { + if (bufferSize == -1) { Tcl_SetObjResult(interp, Tcl_ObjPrintf( "error reading file \"%s\": %s", fileName, Tcl_PosixError(interp))); @@ -1149,7 +1149,7 @@ static ElArray * NewArray( int numEls) /* How many elements of space to allocate. */ { - register ElArray *arrayPtr = ckalloc(EL_ARRAY_SIZE(numEls)); + ElArray *arrayPtr = (ElArray *)ckalloc(EL_ARRAY_SIZE(numEls)); arrayPtr->arraySize = numEls; arrayPtr->numUsed = 0; @@ -1176,17 +1176,17 @@ NewArray( static ElArray * ExtendArray( - register ElArray *arrayPtr, /* Array to be extended. */ - register Element *elPtr) /* Element to be copied into array. */ + ElArray *arrayPtr, /* Array to be extended. */ + Element *elPtr) /* Element to be copied into array. */ { /* * If the current array has filled up, make it bigger. */ if (arrayPtr->numUsed >= arrayPtr->arraySize) { - register int newSize = 2*arrayPtr->arraySize; + int newSize = 2*arrayPtr->arraySize; - arrayPtr = ckrealloc(arrayPtr, EL_ARRAY_SIZE(newSize)); + arrayPtr = (ElArray *)ckrealloc(arrayPtr, EL_ARRAY_SIZE(newSize)); arrayPtr->arraySize = newSize; arrayPtr->nextToUse = &arrayPtr->els[arrayPtr->numUsed]; } @@ -1225,9 +1225,9 @@ SetupStacks( { int level, i; const int *iPtr; - register StackLevel *levelPtr; - register ElArray *arrayPtr; - ThreadSpecificData *tsdPtr = + StackLevel *levelPtr; + ElArray *arrayPtr; + ThreadSpecificData *tsdPtr = (ThreadSpecificData *) Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); /* @@ -1304,7 +1304,7 @@ SetupStacks( */ if (tsdPtr->curLevel >= tsdPtr->numLevels) { - StackLevel *newLevels = + StackLevel *newLevels = (StackLevel *) ckalloc(tsdPtr->numLevels * 2 * sizeof(StackLevel)); memcpy(newLevels, tsdPtr->levels, @@ -1331,7 +1331,7 @@ SetupStacks( */ for (iPtr = searchOrder; *iPtr != -1; iPtr++) { - register Element *elPtr; + Element *elPtr; int count; Tk_Uid id; @@ -1386,9 +1386,9 @@ ExtendStacks( int leaf) /* If zero, then don't copy exact leaf * elements. */ { - register int count; - register Element *elPtr; - ThreadSpecificData *tsdPtr = + int count; + Element *elPtr; + ThreadSpecificData *tsdPtr = (ThreadSpecificData *) Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); for (elPtr = arrayPtr->els, count = arrayPtr->numUsed; @@ -1419,9 +1419,9 @@ ExtendStacks( static void OptionThreadExitProc( - ClientData clientData) /* not used */ + TCL_UNUSED(void *)) { - ThreadSpecificData *tsdPtr = + ThreadSpecificData *tsdPtr = (ThreadSpecificData *) Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); if (tsdPtr->initialized) { @@ -1453,13 +1453,13 @@ OptionThreadExitProc( static void OptionInit( - register TkMainInfo *mainPtr) + TkMainInfo *mainPtr) /* Top-level information about window that * isn't initialized yet. */ { int i; Tcl_Interp *interp; - ThreadSpecificData *tsdPtr = + ThreadSpecificData *tsdPtr = (ThreadSpecificData *) Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); Element *defaultMatchPtr = &tsdPtr->defaultMatch; @@ -1474,7 +1474,7 @@ OptionInit( tsdPtr->curLevel = -1; tsdPtr->serial = 0; - tsdPtr->levels = ckalloc(5 * sizeof(StackLevel)); + tsdPtr->levels = (StackLevel *)ckalloc(5 * sizeof(StackLevel)); for (i = 0; i < NUM_STACKS; i++) { tsdPtr->stacks[i] = NewArray(10); tsdPtr->levels[0].bases[i] = 0; @@ -1521,7 +1521,7 @@ ClearOptionTree( ElArray *arrayPtr) /* Array of options; delete everything * referred to recursively by this. */ { - register Element *elPtr; + Element *elPtr; int count; for (count = arrayPtr->numUsed, elPtr = arrayPtr->els; count > 0; diff --git a/library/safetk.tcl b/library/safetk.tcl index 841a0b6..9e71cc6 100644 --- a/library/safetk.tcl +++ b/library/safetk.tcl @@ -220,7 +220,7 @@ proc ::safe::tkTopLevel {child display} { set w ".safe$tkSafeId" if {[catch {toplevel $w -screen $display -class SafeTk} msg]} { return -code error -errorcode {TK TOPLEVEL SAFE} \ - "Unable to create toplevel for safe child \"$child\" ($msg)" + "Unable to create toplevel for \"$child\" ($msg)" } Log $child "New toplevel $w" NOTICE diff --git a/macosx/ttkMacOSXTheme.c b/macosx/ttkMacOSXTheme.c index a9c2195..3541dd8 100644 --- a/macosx/ttkMacOSXTheme.c +++ b/macosx/ttkMacOSXTheme.c @@ -2148,7 +2148,7 @@ static void TrackElementDraw( * HIThemeTrackDrawInfo uses 2-byte alignment; assigning to a separate * bounds variable avoids UBSan (-fsanitize=alignment) complaints. */ - + CGRect bounds = BoxToRect(d, b); HIThemeTrackDrawInfo info = { .version = 0, diff --git a/tests/safePrimarySelection.test b/tests/safePrimarySelection.test index e6ef487..8475ce3 100644 --- a/tests/safePrimarySelection.test +++ b/tests/safePrimarySelection.test @@ -17,8 +17,8 @@ tcltest::loadTestedCommands # - Tests 3.*, 6.* test that the fix for ticket de156e9efe implemented in branch # bug-de156e9efe has been applied and still works. They test that a Safe Base # child interpreter cannot write to the PRIMARY selection. -# - The other tests verify that the parent interpreter and an unsafe child CAN -# write to the PRIMARY selection, and therefore that the test scripts +# - The other tests verify that the parent interpreter and an child interpreter +# CAN write to the PRIMARY selection, and therefore that the test scripts # themselves are valid. # - A text, entry, ttk::entry, listbox, spinbox or ttk::spinbox widget can have # option -exportselection 1, meaning (in an unsafe interpreter) that a @@ -33,7 +33,7 @@ namespace eval ::_test_tmp {} # ------------------------------------------------------------------------------ # Proc ::_test_tmp::unsafeInterp # ------------------------------------------------------------------------------ -# Command that creates an unsafe child interpreter and tries to load Tk. +# Command that creates an child interpreter and tries to load Tk. # - This is necessary for loading Tk if the tests are done in the build # directory without installing Tk. In that case the usual auto_path loading # mechanism cannot work because the tk binary is not where pkgIndex.tcl says @@ -331,7 +331,7 @@ test safePrimarySelection-1.10 {parent interpreter, ttk::spinbox spun/selected/s ::_test_tmp::clearPrimarySelection } -result {3} -test safePrimarySelection-2.1 {unsafe child interpreter, text, no existing selection} -setup { +test safePrimarySelection-2.1 {child interpreter, text, no existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::clearPrimarySelection @@ -348,7 +348,7 @@ test safePrimarySelection-2.1 {unsafe child interpreter, text, no existing selec ::_test_tmp::clearPrimarySelection } -result {PAYLOAD} -test safePrimarySelection-2.2 {unsafe child interpreter, entry, no existing selection} -setup { +test safePrimarySelection-2.2 {child interpreter, entry, no existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::clearPrimarySelection @@ -365,7 +365,7 @@ test safePrimarySelection-2.2 {unsafe child interpreter, entry, no existing sele ::_test_tmp::clearPrimarySelection } -result {PAYLOAD} -test safePrimarySelection-2.3 {unsafe child interpreter, ttk::entry, no existing selection} -setup { +test safePrimarySelection-2.3 {child interpreter, ttk::entry, no existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::clearPrimarySelection @@ -382,7 +382,7 @@ test safePrimarySelection-2.3 {unsafe child interpreter, ttk::entry, no existing ::_test_tmp::clearPrimarySelection } -result {PAYLOAD} -test safePrimarySelection-2.4 {unsafe child interpreter, listbox, no existing selection} -setup { +test safePrimarySelection-2.4 {child interpreter, listbox, no existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::clearPrimarySelection @@ -399,7 +399,7 @@ test safePrimarySelection-2.4 {unsafe child interpreter, listbox, no existing se ::_test_tmp::clearPrimarySelection } -result {PAYLOAD} -test safePrimarySelection-2.5 {unsafe child interpreter, spinbox as entry, no existing selection} -setup { +test safePrimarySelection-2.5 {child interpreter, spinbox as entry, no existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::clearPrimarySelection @@ -416,7 +416,7 @@ test safePrimarySelection-2.5 {unsafe child interpreter, spinbox as entry, no ex ::_test_tmp::clearPrimarySelection } -result {PAYLOAD} -test safePrimarySelection-2.6 {unsafe child interpreter, spinbox spun, no existing selection} -setup { +test safePrimarySelection-2.6 {child interpreter, spinbox spun, no existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::clearPrimarySelection @@ -433,7 +433,7 @@ test safePrimarySelection-2.6 {unsafe child interpreter, spinbox spun, no existi ::_test_tmp::clearPrimarySelection } -result {2} -test safePrimarySelection-2.7 {unsafe child interpreter, spinbox spun/selected/spun, no existing selection} -setup { +test safePrimarySelection-2.7 {child interpreter, spinbox spun/selected/spun, no existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::clearPrimarySelection @@ -450,7 +450,7 @@ test safePrimarySelection-2.7 {unsafe child interpreter, spinbox spun/selected/s ::_test_tmp::clearPrimarySelection } -result {3} -test safePrimarySelection-2.8 {unsafe child interpreter, ttk::spinbox as entry, no existing selection} -setup { +test safePrimarySelection-2.8 {child interpreter, ttk::spinbox as entry, no existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::clearPrimarySelection @@ -467,7 +467,7 @@ test safePrimarySelection-2.8 {unsafe child interpreter, ttk::spinbox as entry, ::_test_tmp::clearPrimarySelection } -result {PAYLOAD} -test safePrimarySelection-2.9 {unsafe child interpreter, ttk::spinbox spun, no existing selection} -setup { +test safePrimarySelection-2.9 {child interpreter, ttk::spinbox spun, no existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::clearPrimarySelection @@ -484,7 +484,7 @@ test safePrimarySelection-2.9 {unsafe child interpreter, ttk::spinbox spun, no e ::_test_tmp::clearPrimarySelection } -result {2} -test safePrimarySelection-2.10 {unsafe child interpreter, ttk::spinbox spun/selected/spun, no existing selection} -setup { +test safePrimarySelection-2.10 {child interpreter, ttk::spinbox spun/selected/spun, no existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::clearPrimarySelection @@ -501,7 +501,7 @@ test safePrimarySelection-2.10 {unsafe child interpreter, ttk::spinbox spun/sele ::_test_tmp::clearPrimarySelection } -result {3} -test safePrimarySelection-3.1 {IMPORTANT, safe child interpreter, text, no existing selection} -setup { +test safePrimarySelection-3.1 {IMPORTANT, safe interpreter, text, no existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::clearPrimarySelection @@ -522,7 +522,7 @@ test safePrimarySelection-3.1 {IMPORTANT, safe child interpreter, text, no exist ::_test_tmp::clearPrimarySelection } -result {----} -test safePrimarySelection-3.2 {IMPORTANT, safe child interpreter, entry, no existing selection} -setup { +test safePrimarySelection-3.2 {IMPORTANT, safe interpreter, entry, no existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::clearPrimarySelection @@ -543,7 +543,7 @@ test safePrimarySelection-3.2 {IMPORTANT, safe child interpreter, entry, no exis ::_test_tmp::clearPrimarySelection } -result {----} -test safePrimarySelection-3.3 {IMPORTANT, safe child interpreter, ttk::entry, no existing selection} -setup { +test safePrimarySelection-3.3 {IMPORTANT, safe interpreter, ttk::entry, no existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::clearPrimarySelection @@ -564,7 +564,7 @@ test safePrimarySelection-3.3 {IMPORTANT, safe child interpreter, ttk::entry, no ::_test_tmp::clearPrimarySelection } -result {----} -test safePrimarySelection-3.4 {IMPORTANT, safe child interpreter, listbox, no existing selection} -setup { +test safePrimarySelection-3.4 {IMPORTANT, safe interpreter, listbox, no existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::clearPrimarySelection @@ -585,7 +585,7 @@ test safePrimarySelection-3.4 {IMPORTANT, safe child interpreter, listbox, no ex ::_test_tmp::clearPrimarySelection } -result {----} -test safePrimarySelection-3.5 {IMPORTANT, safe child interpreter, spinbox as entry, no existing selection} -setup { +test safePrimarySelection-3.5 {IMPORTANT, safe interpreter, spinbox as entry, no existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::clearPrimarySelection @@ -606,7 +606,7 @@ test safePrimarySelection-3.5 {IMPORTANT, safe child interpreter, spinbox as ent ::_test_tmp::clearPrimarySelection } -result {----} -test safePrimarySelection-3.6 {IMPORTANT, safe child interpreter, spinbox spun, no existing selection} -setup { +test safePrimarySelection-3.6 {IMPORTANT, safe interpreter, spinbox spun, no existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::clearPrimarySelection @@ -627,7 +627,7 @@ test safePrimarySelection-3.6 {IMPORTANT, safe child interpreter, spinbox spun, ::_test_tmp::clearPrimarySelection } -result {----} -test safePrimarySelection-3.7 {IMPORTANT, safe child interpreter, spinbox spun/selected/spun, no existing selection} -setup { +test safePrimarySelection-3.7 {IMPORTANT, safe interpreter, spinbox spun/selected/spun, no existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::clearPrimarySelection @@ -648,7 +648,7 @@ test safePrimarySelection-3.7 {IMPORTANT, safe child interpreter, spinbox spun/s ::_test_tmp::clearPrimarySelection } -result {----} -test safePrimarySelection-3.8 {IMPORTANT, safe child interpreter, ttk::spinbox as entry, no existing selection} -setup { +test safePrimarySelection-3.8 {IMPORTANT, safe interpreter, ttk::spinbox as entry, no existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::clearPrimarySelection @@ -669,7 +669,7 @@ test safePrimarySelection-3.8 {IMPORTANT, safe child interpreter, ttk::spinbox a ::_test_tmp::clearPrimarySelection } -result {----} -test safePrimarySelection-3.9 {IMPORTANT, safe child interpreter, ttk::spinbox spun, no existing selection} -setup { +test safePrimarySelection-3.9 {IMPORTANT, safe interpreter, ttk::spinbox spun, no existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::clearPrimarySelection @@ -690,7 +690,7 @@ test safePrimarySelection-3.9 {IMPORTANT, safe child interpreter, ttk::spinbox s ::_test_tmp::clearPrimarySelection } -result {----} -test safePrimarySelection-3.10 {IMPORTANT, safe child interpreter, ttk::spinbox spun/selected/spun, no existing selection} -setup { +test safePrimarySelection-3.10 {IMPORTANT, safe interpreter, ttk::spinbox spun/selected/spun, no existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::clearPrimarySelection @@ -831,7 +831,7 @@ test safePrimarySelection-4.10 {parent interpreter, ttk::spinbox spun/selected/s ::_test_tmp::clearPrimarySelection } -result {3} -test safePrimarySelection-5.1 {unsafe child interpreter, text, existing selection} -setup { +test safePrimarySelection-5.1 {child interpreter, text, existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::setPrimarySelection @@ -848,7 +848,7 @@ test safePrimarySelection-5.1 {unsafe child interpreter, text, existing selectio ::_test_tmp::clearPrimarySelection } -result {PAYLOAD} -test safePrimarySelection-5.2 {unsafe child interpreter, entry, existing selection} -setup { +test safePrimarySelection-5.2 {child interpreter, entry, existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::setPrimarySelection @@ -865,7 +865,7 @@ test safePrimarySelection-5.2 {unsafe child interpreter, entry, existing selecti ::_test_tmp::clearPrimarySelection } -result {PAYLOAD} -test safePrimarySelection-5.3 {unsafe child interpreter, ttk::entry, existing selection} -setup { +test safePrimarySelection-5.3 {child interpreter, ttk::entry, existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::setPrimarySelection @@ -882,7 +882,7 @@ test safePrimarySelection-5.3 {unsafe child interpreter, ttk::entry, existing se ::_test_tmp::clearPrimarySelection } -result {PAYLOAD} -test safePrimarySelection-5.4 {unsafe child interpreter, listbox, existing selection} -setup { +test safePrimarySelection-5.4 {child interpreter, listbox, existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::setPrimarySelection @@ -899,7 +899,7 @@ test safePrimarySelection-5.4 {unsafe child interpreter, listbox, existing selec ::_test_tmp::clearPrimarySelection } -result {PAYLOAD} -test safePrimarySelection-5.5 {unsafe child interpreter, spinbox as entry, existing selection} -setup { +test safePrimarySelection-5.5 {child interpreter, spinbox as entry, existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::setPrimarySelection @@ -916,7 +916,7 @@ test safePrimarySelection-5.5 {unsafe child interpreter, spinbox as entry, exist ::_test_tmp::clearPrimarySelection } -result {PAYLOAD} -test safePrimarySelection-5.6 {unsafe child interpreter, spinbox spun, existing selection} -setup { +test safePrimarySelection-5.6 {child interpreter, spinbox spun, existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::setPrimarySelection @@ -933,7 +933,7 @@ test safePrimarySelection-5.6 {unsafe child interpreter, spinbox spun, existing ::_test_tmp::clearPrimarySelection } -result {2} -test safePrimarySelection-5.7 {unsafe child interpreter, spinbox spun/selected/spun, existing selection} -setup { +test safePrimarySelection-5.7 {child interpreter, spinbox spun/selected/spun, existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::setPrimarySelection @@ -950,7 +950,7 @@ test safePrimarySelection-5.7 {unsafe child interpreter, spinbox spun/selected/s ::_test_tmp::clearPrimarySelection } -result {3} -test safePrimarySelection-5.8 {unsafe child interpreter, ttk::spinbox as entry, existing selection} -setup { +test safePrimarySelection-5.8 {child interpreter, ttk::spinbox as entry, existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::setPrimarySelection @@ -967,7 +967,7 @@ test safePrimarySelection-5.8 {unsafe child interpreter, ttk::spinbox as entry, ::_test_tmp::clearPrimarySelection } -result {PAYLOAD} -test safePrimarySelection-5.9 {unsafe child interpreter, ttk::spinbox spun, existing selection} -setup { +test safePrimarySelection-5.9 {child interpreter, ttk::spinbox spun, existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::setPrimarySelection @@ -984,7 +984,7 @@ test safePrimarySelection-5.9 {unsafe child interpreter, ttk::spinbox spun, exis ::_test_tmp::clearPrimarySelection } -result {2} -test safePrimarySelection-5.10 {unsafe child interpreter, ttk::spinbox spun/selected/spun, existing selection} -setup { +test safePrimarySelection-5.10 {child interpreter, ttk::spinbox spun/selected/spun, existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::setPrimarySelection @@ -1001,7 +1001,7 @@ test safePrimarySelection-5.10 {unsafe child interpreter, ttk::spinbox spun/sele ::_test_tmp::clearPrimarySelection } -result {3} -test safePrimarySelection-6.1 {IMPORTANT, safe child interpreter, text, existing selection} -setup { +test safePrimarySelection-6.1 {IMPORTANT, safe interpreter, text, existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::setPrimarySelection @@ -1022,7 +1022,7 @@ test safePrimarySelection-6.1 {IMPORTANT, safe child interpreter, text, existing ::_test_tmp::clearPrimarySelection } -result {OLD_VALUE----OLD_VALUE} -test safePrimarySelection-6.2 {IMPORTANT, safe child interpreter, entry, existing selection} -setup { +test safePrimarySelection-6.2 {IMPORTANT, safe interpreter, entry, existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::setPrimarySelection @@ -1043,7 +1043,7 @@ test safePrimarySelection-6.2 {IMPORTANT, safe child interpreter, entry, existin ::_test_tmp::clearPrimarySelection } -result {OLD_VALUE----OLD_VALUE} -test safePrimarySelection-6.3 {IMPORTANT, safe child interpreter, ttk::entry, existing selection} -setup { +test safePrimarySelection-6.3 {IMPORTANT, safe interpreter, ttk::entry, existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::setPrimarySelection @@ -1064,7 +1064,7 @@ test safePrimarySelection-6.3 {IMPORTANT, safe child interpreter, ttk::entry, ex ::_test_tmp::clearPrimarySelection } -result {OLD_VALUE----OLD_VALUE} -test safePrimarySelection-6.4 {IMPORTANT, safe child interpreter, listbox, existing selection} -setup { +test safePrimarySelection-6.4 {IMPORTANT, safe interpreter, listbox, existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::setPrimarySelection @@ -1085,7 +1085,7 @@ test safePrimarySelection-6.4 {IMPORTANT, safe child interpreter, listbox, exist ::_test_tmp::clearPrimarySelection } -result {OLD_VALUE----OLD_VALUE} -test safePrimarySelection-6.5 {IMPORTANT, safe child interpreter, spinbox as entry, existing selection} -setup { +test safePrimarySelection-6.5 {IMPORTANT, safe interpreter, spinbox as entry, existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::setPrimarySelection @@ -1106,7 +1106,7 @@ test safePrimarySelection-6.5 {IMPORTANT, safe child interpreter, spinbox as ent ::_test_tmp::clearPrimarySelection } -result {OLD_VALUE----OLD_VALUE} -test safePrimarySelection-6.6 {IMPORTANT, safe child interpreter, spinbox spun, existing selection} -setup { +test safePrimarySelection-6.6 {IMPORTANT, safe interpreter, spinbox spun, existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::setPrimarySelection @@ -1127,7 +1127,7 @@ test safePrimarySelection-6.6 {IMPORTANT, safe child interpreter, spinbox spun, ::_test_tmp::clearPrimarySelection } -result {OLD_VALUE----OLD_VALUE} -test safePrimarySelection-6.7 {IMPORTANT, safe child interpreter, spinbox spun/selected/spun, existing selection} -setup { +test safePrimarySelection-6.7 {IMPORTANT, safe interpreter, spinbox spun/selected/spun, existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::setPrimarySelection @@ -1148,7 +1148,7 @@ test safePrimarySelection-6.7 {IMPORTANT, safe child interpreter, spinbox spun/s ::_test_tmp::clearPrimarySelection } -result {OLD_VALUE----OLD_VALUE} -test safePrimarySelection-6.8 {IMPORTANT, safe child interpreter, ttk::spinbox as entry, existing selection} -setup { +test safePrimarySelection-6.8 {IMPORTANT, safe interpreter, ttk::spinbox as entry, existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::setPrimarySelection @@ -1169,7 +1169,7 @@ test safePrimarySelection-6.8 {IMPORTANT, safe child interpreter, ttk::spinbox a ::_test_tmp::clearPrimarySelection } -result {OLD_VALUE----OLD_VALUE} -test safePrimarySelection-6.9 {IMPORTANT, safe child interpreter, ttk::spinbox spun, existing selection} -setup { +test safePrimarySelection-6.9 {IMPORTANT, safe interpreter, ttk::spinbox spun, existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::setPrimarySelection @@ -1190,7 +1190,7 @@ test safePrimarySelection-6.9 {IMPORTANT, safe child interpreter, ttk::spinbox s ::_test_tmp::clearPrimarySelection } -result {OLD_VALUE----OLD_VALUE} -test safePrimarySelection-6.10 {IMPORTANT, safe child interpreter, ttk::spinbox spun/selected/spun, existing selection} -setup { +test safePrimarySelection-6.10 {IMPORTANT, safe interpreter, ttk::spinbox spun/selected/spun, existing selection} -setup { catch {interp delete child2} destroy {*}[winfo children .] ::_test_tmp::setPrimarySelection diff --git a/tests/unixEmbed.test b/tests/unixEmbed.test index 0f9033f..cd7f15f 100644 --- a/tests/unixEmbed.test +++ b/tests/unixEmbed.test @@ -16,7 +16,7 @@ namespace eval ::_test_tmp {} # ------------------------------------------------------------------------------ # Proc ::_test_tmp::testInterp # ------------------------------------------------------------------------------ -# Command that creates an unsafe child interpreter and tries to load Tk. +# Command that creates an child interpreter and tries to load Tk. # This code is borrowed from safePrimarySelection.test # This is necessary for loading Tktest if the tests are done in the build # directory without installing Tk. In that case the usual auto_path loading -- cgit v0.12