diff options
Diffstat (limited to 'libgui/src/tkCanvEdge.c')
-rw-r--r-- | libgui/src/tkCanvEdge.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/libgui/src/tkCanvEdge.c b/libgui/src/tkCanvEdge.c index aa66702d768..a7977f0f904 100644 --- a/libgui/src/tkCanvEdge.c +++ b/libgui/src/tkCanvEdge.c @@ -179,8 +179,14 @@ static void TranslateEdge _ANSI_ARGS_((Tk_Canvas canvas, static Tk_CustomOption arrowShapeOption = { ParseArrowShape, PrintArrowShape, (ClientData) NULL}; -static Tk_CustomOption tagsOption = {Tk_CanvasTagsParseProc, - Tk_CanvasTagsPrintProc, (ClientData) NULL}; +/* + * The callbacks for tagsOption are initialized in ConfigureEdge() + */ + +static Tk_CustomOption tagsOption = +{ (Tk_OptionParseProc *) NULL, + (Tk_OptionPrintProc *) NULL, + (ClientData) NULL}; static Tk_ConfigSpec configSpecs[] = { {TK_CONFIG_UID, "-arrow", (char *) NULL, (char *) NULL, @@ -531,6 +537,17 @@ ConfigureEdge(interp, canvas, itemPtr, argc, argv, flags) tkwin = Tk_CanvasTkwin(canvas); bgBorder = ((TkCanvas *) canvas)->bgBorder; + /* + * Init callbacks in tagsOption before accessing configSpecs. + * This init can't be done statically when using Windows gcc + * since these symbols are imported from the Tk dll. + */ + + if (tagsOption.parseProc == NULL) { + tagsOption.parseProc = Tk_CanvasTagsParseProc; + tagsOption.printProc = Tk_CanvasTagsPrintProc; + } + if (Tk_ConfigureWidget(interp, tkwin, configSpecs, argc, argv, (char *) edgePtr, flags) != TCL_OK) { |