Overview

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

  1. foundin changed to: "trunk"
  2. icomment:
    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. login: "anonymous"
  4. mimetype: "text/x-fossil-plain"