Fix: error: implicit declaration of function 'panic' is invalid in C99 panic is the old name of this function. Its new name is Tcl_Panic. tcl.h defines a compatibility macro but not on macOS because of an alleged conflict with mach/mach.h. --- generic/tkTableTag.c.orig 2013-04-18 18:59:59.000000000 -0500 +++ generic/tkTableTag.c 2020-10-06 01:22:54.000000000 -0500 @@ -212,7 +212,7 @@ TableJoinTag *jtagPtr = (TableJoinTag *) tagPtr; if (jtagPtr->magic != 0x99ABCDEF) { - panic("bad mojo in TableResetTag"); + Tcl_Panic("bad mojo in TableResetTag"); } memset((VOID *) jtagPtr, 0, sizeof(TableJoinTag)); @@ -269,7 +269,7 @@ unsigned int prio; if (jtagPtr->magic != 0x99ABCDEF) { - panic("bad mojo in TableMergeTag"); + Tcl_Panic("bad mojo in TableMergeTag"); } #ifndef NO_TAG_PRIORITIES @@ -432,7 +432,7 @@ if (bottom) { *bottom = tagPtr->bd[3]; } break; default: - panic("invalid border value '%d'\n", tagPtr->borders); + Tcl_Panic("invalid border value '%d'\n", tagPtr->borders); break; } return tagPtr->borders; --- generic/tkTableUtil.c.orig 2013-04-18 18:59:59.000000000 -0500 +++ generic/tkTableUtil.c 2020-10-06 01:22:45.000000000 -0500 @@ -105,7 +105,7 @@ bordersPtr = &(tagPtr->borders); bdPtr = tagPtr->bd; } else { - panic("invalid type given to TableOptionBdSet\n"); + Tcl_Panic("invalid type given to TableOptionBdSet\n"); return TCL_ERROR; /* lint */ } @@ -188,7 +188,7 @@ } else if (type == BD_TABLE_WIN) { return ((TableEmbWindow *) widgRec)->borderStr; } else { - panic("invalid type given to TableOptionBdSet\n"); + Tcl_Panic("invalid type given to TableOptionBdSet\n"); return NULL; /* lint */ } }