mirror of
https://github.com/openbsd/ports.git
synced 2026-06-17 23:13:55 +02:00
expect: set channel type to TCL_CHANNEL_VERSION_2 for llvm22
Avoid passing the ExpBlockModeProc function pointer through an object pointer type and instead move it to the proper place in the struct. Setting the channel version of expChannelType to 2 in the version field tells tcl's Tcl_ChannelBlockModeProc() to use the function pointer directly, and avoids undefined behavior. Using TCL_CHANNEL_VERSION_2 is the conservative choice, although version 5 would also work. discussed with stu tested/ok jca
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
COMMENT = sophisticated scripter based on Tcl/Tk
|
||||
|
||||
VERSION = 5.45.4
|
||||
REVISION = 0
|
||||
|
||||
DISTNAME = expect${VERSION}
|
||||
PKGNAME = expect-${VERSION}
|
||||
SHARED_LIBS = expect5454 0.0
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
Get rid of implicit declaration of function warning
|
||||
|
||||
--- exp_chan.c.orig Thu Sep 9 19:29:43 2010
|
||||
+++ exp_chan.c Thu Sep 9 19:30:27 2010
|
||||
error: incompatible pointer types initializing 'Tcl_ChannelTypeVersion' (aka 'struct Tcl_ChannelTypeVersion_ *') with an expression of type 'int (ClientData, int)' (aka 'int (void *, int)') [-Wincompatible-pointer-types]
|
||||
|
||||
Index: exp_chan.c
|
||||
--- exp_chan.c.orig
|
||||
+++ exp_chan.c
|
||||
@@ -37,6 +37,7 @@
|
||||
#include "exp_log.h"
|
||||
#include "tcldbg.h" /* Dbg_StdinMode */
|
||||
@@ -10,3 +13,20 @@ Get rid of implicit declaration of function warning
|
||||
extern int expSetBlockModeProc _ANSI_ARGS_((int fd, int mode));
|
||||
static int ExpBlockModeProc _ANSI_ARGS_((ClientData instanceData,
|
||||
int mode));
|
||||
@@ -58,7 +59,7 @@ static int ExpGetHandleProc _ANSI_ARGS_((ClientData i
|
||||
|
||||
Tcl_ChannelType expChannelType = {
|
||||
"exp", /* Type name. */
|
||||
- ExpBlockModeProc, /* Set blocking/nonblocking mode.*/
|
||||
+ TCL_CHANNEL_VERSION_2, /* Version. */
|
||||
ExpCloseProc, /* Close proc. */
|
||||
ExpInputProc, /* Input proc. */
|
||||
ExpOutputProc, /* Output proc. */
|
||||
@@ -68,6 +69,7 @@ Tcl_ChannelType expChannelType = {
|
||||
ExpWatchProc, /* Initialize notifier. */
|
||||
ExpGetHandleProc, /* Get OS handles out of channel. */
|
||||
NULL, /* Close2 proc */
|
||||
+ ExpBlockModeProc, /* Set blocking/nonblocking mode.*/
|
||||
};
|
||||
|
||||
typedef struct ThreadSpecificData {
|
||||
|
||||
Reference in New Issue
Block a user