Artifact ID: 73de55539cafab4983d58f0cafab5f1ad84b4aae27fac862f738faa66289c8f7
Ticket: c6cc9e097be16bd328603059e0ac3a73269ef25e
MacOS Catalina duplicate symbol _tdomStubsPtr
User & Date: anonymous 2020-06-09 22:14:25

  1. Change foundin to "trunk"
  2. Change icomment to:

    Hi de!

    I confirm this issue on my box (but I don't know why this would be specific to macOS, or why you don't see the symbol duplicates elsewhere).

    Between these two commits

    fossil diff --from d4bb0eb147b1671a --to d41caf001d9d4d2a

    in tdomDecls.h you dropped "extern" for

    -extern const TdomStubs *tdomStubsPtr; +const TdomStubs *tdomStubsPtr;

    This leads to the classic duplicate definition in the compilation units including tdomDecls.h during linking (tdominit.c and tdomStubLib.c, for example).

    The below fixes this for me (and aligns the definition in tdominit.c).

    -------%<------- Index: generic/tdomDecls.h ================================================================== --- generic/tdomDecls.h +++ generic/tdomDecls.h @@ -85,11 +85,11 @@ int (*xML_GetIdAttributeIndex) (XML_Parser parser); /* 15 */ domNode * (*tcldom_getNodeFromName) (Tcl_Interp *interp, char *nodeName, char **errMsg); /* 16 */ domDocument * (*tcldom_getDocumentFromName) (Tcl_Interp *interp, char *docName, char **errMsg); /* 17 */ } TdomStubs;

    -const TdomStubs *tdomStubsPtr; +EXTERN const TdomStubs *tdomStubsPtr;

    #ifdef __cplusplus } #endif

    Index: generic/tdominit.c ================================================================== --- generic/tdominit.c +++ generic/tdominit.c @@ -39,11 +39,11 @@ #include <dom.h> #include <tdom.h> #include <tcldom.h> #include <tclpull.h>

    -extern TdomStubs tdomStubs; +const TdomStubs *tdomStubsPtr;

    /* *---------------------------------------------------------------------------- * * Tdom_Init -- @@ -93,11 +93,11 @@ Tcl_CreateObjCommand(interp, "tdom::pullparser", tDOM_PullParserCmd, NULL, NULL ); #endif

    #ifdef USE_TCL_STUBS Tcl_PkgProvideEx(interp, PACKAGE_NAME, PACKAGE_VERSION, - (ClientData) &tdomStubs); + (ClientData) tdomStubsPtr); #else Tcl_PkgProvide(interp, PACKAGE_NAME, PACKAGE_VERSION); #endif

    return TCL_OK; -------%<-------

    HTH, mr_calvin

  3. Change login to "anonymous"
  4. Change mimetype to "text/x-fossil-plain"