Blob Blame History Raw
diff -up doxygen-1.8.16/addon/doxywizard/wizard.h.orig doxygen-1.8.16/addon/doxywizard/wizard.h
--- doxygen-1.8.16/addon/doxywizard/wizard.h.orig	2017-10-31 20:36:00.000000000 +0100
+++ doxygen-1.8.16/addon/doxywizard/wizard.h	2019-12-10 11:45:32.750260467 +0100
@@ -52,11 +52,11 @@ class TuneColorDialog : public QDialog
     void updateImage(int hue,int sat,int val);
 
   private:
-    QImage *m_image;
-    QLabel *m_imageLab;
-    int m_hue;
-    int m_sat;
-    int m_gam;
+    QImage *m_image = 0;
+    QLabel *m_imageLab = 0;
+    int m_hue = 0;
+    int m_sat = 0;
+    int m_gam = 0;
 };
 
 class ColorPicker : public QWidget
@@ -91,11 +91,11 @@ private:
     void setSat(int v);
     void setGam(int v);
 
-    QPixmap *m_pix;
-    Mode m_mode;
-    int m_gam;
-    int m_hue;
-    int m_sat;
+    QPixmap *m_pix = 0;
+    Mode m_mode = Hue;
+    int m_gam = 0;
+    int m_hue = 0;
+    int m_sat = 0;
 
 };
 
@@ -120,16 +120,16 @@ class Step1 : public QWidget
     void setRecursiveScan(int);
 
   private:
-    QLineEdit *m_projName;
-    QLineEdit *m_projBrief;
-    QLineEdit *m_projNumber;
-    QLineEdit *m_sourceDir;
-    QLineEdit *m_destDir;
-    QLabel    *m_projIconLab;
-    QCheckBox *m_recursive;
-    QPushButton *m_srcSelectDir;
-    QPushButton *m_dstSelectDir;
-    Wizard    *m_wizard;
+    QLineEdit *m_projName = 0;
+    QLineEdit *m_projBrief = 0;
+    QLineEdit *m_projNumber = 0;
+    QLineEdit *m_sourceDir = 0;
+    QLineEdit *m_destDir = 0;
+    QLabel    *m_projIconLab = 0;
+    QCheckBox *m_recursive = 0;
+    QPushButton *m_srcSelectDir = 0;
+    QPushButton *m_dstSelectDir = 0;
+    Wizard    *m_wizard = 0;
     const QHash<QString,Input *> &m_modelData;
 };
 
@@ -146,12 +146,12 @@ class Step2 : public QWidget
     void changeCrossRefState(int choice);
 
   private:
-    QGroupBox    *m_extractMode;
-    QGroupBox    *m_optimizeLang;
-    QButtonGroup *m_extractModeGroup;
-    QButtonGroup *m_optimizeLangGroup;
-    QCheckBox    *m_crossRef;
-    Wizard       *m_wizard;
+    QGroupBox    *m_extractMode = 0;
+    QGroupBox    *m_optimizeLang = 0;
+    QButtonGroup *m_extractModeGroup = 0;
+    QButtonGroup *m_optimizeLangGroup = 0;
+    QCheckBox    *m_crossRef = 0;
+    Wizard       *m_wizard = 0;
     const QHash<QString,Input *> &m_modelData;
 };
 
@@ -175,18 +175,18 @@ class Step3 : public QWidget
     void tuneColorDialog();
 
   private:
-    QGroupBox *m_texOptions;
-    QButtonGroup *m_texOptionsGroup;
-    QGroupBox *m_htmlOptions;
-    QButtonGroup *m_htmlOptionsGroup;
-    QCheckBox *m_htmlEnabled;
-    QCheckBox *m_latexEnabled;
-    QCheckBox *m_manEnabled;
-    QCheckBox *m_rtfEnabled;
-    QCheckBox *m_xmlEnabled;
-    QCheckBox *m_searchEnabled;
-    QPushButton *m_tuneColor;
-    Wizard    *m_wizard;
+    QGroupBox *m_texOptions = 0;
+    QButtonGroup *m_texOptionsGroup = 0;
+    QGroupBox *m_htmlOptions = 0;
+    QButtonGroup *m_htmlOptionsGroup = 0;
+    QCheckBox *m_htmlEnabled = 0;
+    QCheckBox *m_latexEnabled = 0;
+    QCheckBox *m_manEnabled = 0;
+    QCheckBox *m_rtfEnabled = 0;
+    QCheckBox *m_xmlEnabled = 0;
+    QCheckBox *m_searchEnabled = 0;
+    QPushButton *m_tuneColor = 0;
+    Wizard    *m_wizard = 0;
     const QHash<QString,Input *> &m_modelData;
 };
 
@@ -209,17 +209,17 @@ class Step4 : public QWidget
     void setCallerGraphEnabled(int state);
 
   private:
-    QGroupBox *m_diagramMode;
-    QButtonGroup *m_diagramModeGroup;
-    QGroupBox *m_dotGroup;
-    QCheckBox *m_dotClass;
-    QCheckBox *m_dotCollaboration;
-    QCheckBox *m_dotInclude;
-    QCheckBox *m_dotIncludedBy;
-    QCheckBox *m_dotInheritance;
-    QCheckBox *m_dotCall;
-    QCheckBox *m_dotCaller;
-    Wizard    *m_wizard;
+    QGroupBox *m_diagramMode = 0;
+    QButtonGroup *m_diagramModeGroup = 0;
+    QGroupBox *m_dotGroup = 0;
+    QCheckBox *m_dotClass = 0;
+    QCheckBox *m_dotCollaboration = 0;
+    QCheckBox *m_dotInclude = 0;
+    QCheckBox *m_dotIncludedBy = 0;
+    QCheckBox *m_dotInheritance = 0;
+    QCheckBox *m_dotCall = 0;
+    QCheckBox *m_dotCaller = 0;
+    Wizard    *m_wizard = 0;
     const QHash<QString,Input *> &m_modelData;
 };
 
@@ -243,14 +243,14 @@ class Wizard : public QSplitter
 
   private:
     const QHash<QString,Input *> &m_modelData;
-    QTreeWidget    *m_treeWidget;
-    QStackedWidget *m_topicStack;
-    Step1          *m_step1;
-    Step2          *m_step2;
-    Step3          *m_step3;
-    Step4          *m_step4;
-    QPushButton    *m_next;
-    QPushButton    *m_prev;
+    QTreeWidget    *m_treeWidget = 0;
+    QStackedWidget *m_topicStack = 0;
+    Step1          *m_step1 = 0;
+    Step2          *m_step2 = 0;
+    Step3          *m_step3 = 0;
+    Step4          *m_step4 = 0;
+    QPushButton    *m_next = 0;
+    QPushButton    *m_prev = 0;
 };
 
 #endif
diff -up doxygen-1.8.16/src/classdef.cpp.orig doxygen-1.8.16/src/classdef.cpp
--- doxygen-1.8.16/src/classdef.cpp.orig	2019-08-04 19:04:55.000000000 +0200
+++ doxygen-1.8.16/src/classdef.cpp	2019-12-10 11:52:17.184826531 +0100
@@ -265,7 +265,7 @@ class ClassDefImpl : public DefinitionIm
 
     // PIMPL idiom
     class IMPL;
-    IMPL *m_impl;
+    IMPL *m_impl = 0;
 };
 
 ClassDef *createClassDef(
@@ -525,7 +525,7 @@ class ClassDefAliasImpl : public Definit
                  QPtrDict<void> *visitedClasses=0) const {}
 
   private:
-    mutable bool m_visited;
+    mutable bool m_visited = false;
 };
 
 
@@ -563,27 +563,27 @@ class ClassDefImpl::IMPL
     /*! Include information about the header file should be included
      *  in the documentation. 0 by default, set by setIncludeFile().
      */
-    IncludeInfo *incInfo;
+    IncludeInfo *incInfo = 0;
 
     /*! List of base class (or super-classes) from which this class derives
      *  directly.
      */
-    BaseClassList *inherits;
+    BaseClassList *inherits = 0;
 
     /*! List of sub-classes that directly derive from this class
      */
-    BaseClassList *inheritedBy;
+    BaseClassList *inheritedBy = 0;
 
     /*! Namespace this class is part of
      *  (this is the inner most namespace in case of nested namespaces)
      */
-    NamespaceDef  *nspace;
+    NamespaceDef  *nspace = 0;
 
     /*! File this class is defined in */
-    FileDef *fileDef;
+    FileDef *fileDef = 0;
 
     /*! List of all members (including inherited members) */
-    MemberNameInfoSDict *allMemberNameInfoSDict;
+    MemberNameInfoSDict *allMemberNameInfoSDict = 0;
 
     /*! Template arguments of this class */
     ArgumentList *tempArgs;
@@ -595,7 +595,7 @@ class ClassDefImpl::IMPL
     FileList files;
 
     /*! Examples that use this class */
-    ExampleSDict *exampleSDict;
+    ExampleSDict *exampleSDict = 0;
 
     /*! Holds the kind of "class" this is. */
     ClassDef::CompoundType compType;
@@ -609,30 +609,30 @@ class ClassDefImpl::IMPL
     /*! The inner classes contained in this class. Will be 0 if there are
      *  no inner classes.
      */
-    ClassSDict *innerClasses;
+    ClassSDict *innerClasses = 0;
 
     /* classes for the collaboration diagram */
-    UsesClassDict *usesImplClassDict;
-    UsesClassDict *usedByImplClassDict;
-    UsesClassDict *usesIntfClassDict;
+    UsesClassDict *usesImplClassDict = 0;
+    UsesClassDict *usedByImplClassDict = 0;
+    UsesClassDict *usesIntfClassDict = 0;
 
-    ConstraintClassDict *constraintClassDict;
+    ConstraintClassDict *constraintClassDict = 0;
 
     /*! Template instances that exists of this class, the key in the
      *  dictionary is the template argument list.
      */
-    mutable QDict<ClassDef> *templateInstances;
+    mutable QDict<ClassDef> *templateInstances = 0;
 
     /*! Template instances that exists of this class, as defined by variables.
      *  We do NOT want to document these individually. The key in the
      *  dictionary is the template argument list.
      */
-    mutable QDict<ClassDef> *variableInstances;
+    mutable QDict<ClassDef> *variableInstances = 0;
 
-    QDict<int> *templBaseClassNames;
+    QDict<int> *templBaseClassNames = 0;
 
     /*! The class this class is an instance of. */
-    const ClassDef *templateMaster;
+    const ClassDef *templateMaster = 0;
 
     /*! local class name which could be a typedef'ed alias name. */
     QCString className;
@@ -640,56 +640,56 @@ class ClassDefImpl::IMPL
     /*! If this class is a Objective-C category, then this points to the
      *  class which is extended.
      */
-    ClassDef *categoryOf;
+    ClassDef *categoryOf = 0;
 
     QList<MemberList> memberLists;
 
     /* user defined member groups */
-    MemberGroupSDict *memberGroupSDict;
+    MemberGroupSDict *memberGroupSDict = 0;
 
     /*! Is this an abstract class? */
-    bool isAbstract;
+    bool isAbstract = false;
 
     /*! Is the class part of an unnamed namespace? */
-    bool isStatic;
+    bool isStatic = false;
 
     /*! TRUE if classes members are merged with those of the base classes. */
-    bool membersMerged;
+    bool membersMerged = false;
 
     /*! TRUE if the class is defined in a source file rather than a header file. */
-    bool isLocal;
+    bool isLocal = false;
 
-    bool isTemplArg;
+    bool isTemplArg = false;
 
     /*! Does this class group its user-grouped members
      *  as a sub-section of the normal (public/protected/..)
      *  groups?
      */
-    bool subGrouping;
+    bool subGrouping = false;
 
     /** Reason of existence is a "use" relation */
-    bool usedOnly;
+    bool usedOnly = false;
 
     /** List of titles to use for the summary */
     SDict<QCString> vhdlSummaryTitles;
 
     /** Is this a simple (non-nested) C structure? */
-    bool isSimple;
+    bool isSimple = false;
 
     /** Does this class overloaded the -> operator? */
-    MemberDef *arrowOperator;
+    MemberDef *arrowOperator = 0;
 
-    ClassList *taggedInnerClasses;
-    ClassDef *tagLessRef;
+    ClassList *taggedInnerClasses = 0;
+    ClassDef *tagLessRef = 0;
 
     /** Does this class represent a Java style enum? */
-    bool isJavaEnum;
+    bool isJavaEnum = false;
 
-    bool isGeneric;
+    bool isGeneric = false;
 
-    bool isAnonymous;
+    bool isAnonymous = false;
 
-    uint64 spec;
+    uint64 spec = 0;
 
     QCString metaData;
 };
diff -up doxygen-1.8.16/src/docgroup.h.orig doxygen-1.8.16/src/docgroup.h
--- doxygen-1.8.16/src/docgroup.h.orig	2019-08-02 18:43:41.000000000 +0200
+++ doxygen-1.8.16/src/docgroup.h	2019-12-10 11:45:32.752260485 +0100
@@ -42,9 +42,9 @@ class DocGroup
 
   private:
     int findExistingGroup(int &groupId,const MemberGroupInfo *info);
-    int              m_openCount;
+    int              m_openCount = 0;
     QCString         m_memberGroupHeader;
-    int              m_memberGroupId;
+    int              m_memberGroupId = 0;
     QCString         m_memberGroupRelates;
     QCString         m_memberGroupDocs;
     QStack<Grouping> m_autoGroupStack;
diff -up doxygen-1.8.16/src/doctokenizer.h.orig doxygen-1.8.16/src/doctokenizer.h
--- doxygen-1.8.16/src/doctokenizer.h.orig	2019-06-10 10:17:24.000000000 +0200
+++ doxygen-1.8.16/src/doctokenizer.h	2019-12-10 11:45:32.752260485 +0100
@@ -81,8 +81,8 @@ struct TokenInfo
   // comment blocks
   
   // list token info
-  bool isEnumList;
-  int indent;
+  bool isEnumList = false;
+  int indent = 0;
 
   // sections
   QCString sectionId;
@@ -95,22 +95,22 @@ struct TokenInfo
   QCString verb;
 
   // xrefitem
-  int id;
+  int id = -1;
 
   // html tag
   HtmlAttribList attribs;
-  bool endTag;
-  bool emptyTag;
+  bool endTag = false;
+  bool emptyTag = false;
 
   // whitespace
   QCString chars;
 
   // url
-  bool isEMailAddr;
+  bool isEMailAddr = false;
 
   // param attributes
   enum ParamDir { In=1, Out=2, InOut=3, Unspecified=0 };
-  ParamDir paramDir;
+  ParamDir paramDir = Unspecified;
 };
 
 // globals
diff -up doxygen-1.8.16/src/dotgraph.h.orig doxygen-1.8.16/src/dotgraph.h
--- doxygen-1.8.16/src/dotgraph.h.orig	2019-06-13 21:36:00.000000000 +0200
+++ doxygen-1.8.16/src/dotgraph.h	2019-12-10 11:45:32.752260485 +0100
@@ -83,22 +83,22 @@ class DotGraph
     QCString relImgName()  const { return m_relPath + imgName(); }
 
     // the following variables are used while writing the graph to a .dot file
-    GraphOutputFormat      m_graphFormat;
-    EmbeddedOutputFormat   m_textFormat;
+    GraphOutputFormat      m_graphFormat = GOF_BITMAP;
+    EmbeddedOutputFormat   m_textFormat = EOF_Html;
     QDir                   m_dir;
     QCString               m_fileName;
     QCString               m_relPath;
-    bool                   m_generateImageMap;
-    int                    m_graphId;
+    bool                   m_generateImageMap = false;
+    int                    m_graphId = 0;
 
     QCString               m_absPath;
     QCString               m_baseName;
     QGString               m_theGraph;
-    bool                   m_regenerate;
-    bool                   m_doNotAddImageToIndex;
-    bool                   m_noDivTag;
-    bool                   m_zoomable;
-    bool                   m_urlOnly;
+    bool                   m_regenerate = false;
+    bool                   m_doNotAddImageToIndex = false;
+    bool                   m_noDivTag = false;
+    bool                   m_zoomable = true;
+    bool                   m_urlOnly = false;
 
   private:
     DotGraph(const DotGraph &);
diff -up doxygen-1.8.16/src/memberdef.cpp.orig doxygen-1.8.16/src/memberdef.cpp
--- doxygen-1.8.16/src/memberdef.cpp.orig	2019-08-06 20:32:27.000000000 +0200
+++ doxygen-1.8.16/src/memberdef.cpp	2019-12-10 11:45:32.753260493 +0100
@@ -1299,32 +1299,32 @@ class MemberDefImpl::IMPL
               const ArgumentList *al,const char *meta
              );
 
-    ClassDef     *classDef;   // member of or related to
-    FileDef      *fileDef;    // member of file definition
-    NamespaceDef *nspace;     // the namespace this member is in.
-
-    MemberDef  *enumScope;    // the enclosing scope, if this is an enum field
-    bool        livesInsideEnum;
-    const MemberDef  *annEnumType;  // the anonymous enum that is the type of this member
-    MemberList *enumFields;   // enumeration fields
-
-    MemberDef  *redefines;    // the members that this member redefines
-    MemberList *redefinedBy;  // the list of members that redefine this one
-
-    MemberDef  *memDef;       // member definition for this declaration
-    MemberDef  *memDec;       // member declaration for this definition
-    ClassDef   *relatedAlso;  // points to class marked by relatedAlso
+    ClassDef     *classDef = 0;   // member of or related to
+    FileDef      *fileDef = 0;    // member of file definition
+    NamespaceDef *nspace = 0;     // the namespace this member is in.
+
+    MemberDef  *enumScope = 0;    // the enclosing scope, if this is an enum field
+    bool        livesInsideEnum = false;
+    const MemberDef  *annEnumType = 0;  // the anonymous enum that is the type of this member
+    MemberList *enumFields = 0;   // enumeration fields
+
+    MemberDef  *redefines = 0;    // the members that this member redefines
+    MemberList *redefinedBy = 0;  // the list of members that redefine this one
+
+    MemberDef  *memDef = 0;       // member definition for this declaration
+    MemberDef  *memDec = 0;       // member declaration for this definition
+    ClassDef   *relatedAlso = 0;  // points to class marked by relatedAlso
 
-    ExampleSDict *exampleSDict; // a dictionary of all examples for quick access
+    ExampleSDict *exampleSDict = 0; // a dictionary of all examples for quick access
 
     QCString type;            // return actual type
     QCString accessorType;    // return type that tell how to get to this member
-    ClassDef *accessorClass;  // class that this member accesses (for anonymous types)
+    ClassDef *accessorClass = 0;  // class that this member accesses (for anonymous types)
     QCString args;            // function arguments/variable array specifiers
     QCString def;             // member definition in code (fully qualified name)
     QCString anc;             // HTML anchor name
-    Specifier virt;           // normal/virtual/pure virtual
-    Protection prot;          // protection type [Public/Protected/Private]
+    Specifier virt = Normal;  // normal/virtual/pure virtual
+    Protection prot = Public; // protection type [Public/Protected/Private]
     QCString decl;            // member declaration in class
 
     QCString bitfields;       // struct member bitfields
@@ -1334,13 +1334,13 @@ class MemberDefImpl::IMPL
     QCString initializer;     // initializer
     QCString extraTypeChars;  // extra type info found after the argument list
     QCString enumBaseType;    // base type of the enum (C++11)
-    int initLines;            // number of lines in the initializer
+    int initLines = 0;            // number of lines in the initializer
 
-    uint64  memSpec;          // The specifiers present for this member
-    MemberType mtype;         // returns the kind of member
-    int maxInitLines;         // when the initializer will be displayed
-    int userInitLines;        // result of explicit \hideinitializer or \showinitializer
-    MemberDef  *annMemb;
+    uint64  memSpec = 0;          // The specifiers present for this member
+    MemberType mtype = MemberType_Define; // returns the kind of member
+    int maxInitLines = 0;         // when the initializer will be displayed
+    int userInitLines = 0;        // result of explicit \hideinitializer or \showinitializer
+    MemberDef  *annMemb = 0;
 
     ArgumentList *defArgList;    // argument list of this member definition
     ArgumentList *declArgList;   // argument list of this member declaration
@@ -1357,19 +1357,19 @@ class MemberDefImpl::IMPL
                                    // as its type then this is computed by
                                    // getClassDefOfAnonymousType() and
                                    // cached here.
-    SDict<MemberList> *classSectionSDict; // not accessible
+    SDict<MemberList> *classSectionSDict = 0; // not accessible
 
-    const MemberDef *groupAlias;    // Member containing the definition
-    int grpId;                // group id
-    MemberGroup *memberGroup; // group's member definition
-    GroupDef *group;          // group in which this member is in
+    const MemberDef *groupAlias = 0;    // Member containing the definition
+    int grpId = 0;                // group id
+    MemberGroup *memberGroup = 0; // group's member definition
+    GroupDef *group = 0;          // group in which this member is in
     Grouping::GroupPri_t grouppri; // priority of this definition
     QCString groupFileName;   // file where this grouping was defined
-    int groupStartLine;       // line  "      "      "     "     "
-    MemberDef *groupMember;
+    int groupStartLine = 0;       // line  "      "      "     "     "
+    MemberDef *groupMember = 0;
 
-    bool isTypedefValCached;
-    const ClassDef *cachedTypedefValue;
+    bool isTypedefValCached = false;
+    const ClassDef *cachedTypedefValue = 0;
     QCString cachedTypedefTemplSpec;
     QCString cachedResolvedType;
 
@@ -1379,41 +1379,41 @@ class MemberDefImpl::IMPL
     //QCString inbodyDocs;
 
     // documentation inheritance
-    MemberDef *docProvider;
+    MemberDef *docProvider = 0;
 
     // to store the output file base from tag files
     QCString explicitOutputFileBase;
 
     // objective-c
-    bool implOnly; // function found in implementation but not
-                     // in the interface
-    mutable bool hasDocumentedParams;
-    mutable bool hasDocumentedReturnType;
-    bool isDMember;
-    Relationship related;     // relationship of this to the class
-    bool stat;                // is it a static function?
-    bool proto;               // is it a prototype;
-    bool docEnumValues;       // is an enum with documented enum values.
-
-    mutable bool annScope;    // member is part of an anonymous scope
-    mutable bool annUsed;     // ugly: needs to be mutable to allow setAnonymousUsed to act as a
-                              // const member.
-    bool hasCallGraph;
-    bool hasCallerGraph;
-    bool hasReferencedByRelation;
-    bool hasReferencesRelation;
-    bool explExt;             // member was explicitly declared external
-    bool tspec;               // member is a template specialization
-    bool groupHasDocs;        // true if the entry that caused the grouping was documented
-    bool docsForDefinition;   // TRUE => documentation block is put before
-                              //         definition.
-                              // FALSE => block is put before declaration.
-    ClassDef *category;
-    MemberDef *categoryRelation;
+    bool implOnly = false; // function found in implementation but not
+                           // in the interface
+    mutable bool hasDocumentedParams = false;
+    mutable bool hasDocumentedReturnType = false;
+    bool isDMember = false;
+    Relationship related = Member;    // relationship of this to the class
+    bool stat = false;                // is it a static function?
+    bool proto = false;               // is it a prototype?
+    bool docEnumValues = false;       // is an enum with documented enum values.
+
+    mutable bool annScope = false;    // member is part of an anonymous scope
+    mutable bool annUsed = false;     // ugly: needs to be mutable to allow setAnonymousUsed to act as a
+                                      // const member.
+    bool hasCallGraph = false;
+    bool hasCallerGraph = false;
+    bool hasReferencedByRelation = false;
+    bool hasReferencesRelation = false;
+    bool explExt = false;             // member was explicitly declared external
+    bool tspec = false;               // member is a template specialization
+    bool groupHasDocs = false;        // true if the entry that caused the grouping was documented
+    bool docsForDefinition = false;   // TRUE => documentation block is put before
+                                      //         definition.
+                                      // FALSE => block is put before declaration.
+    ClassDef *category = 0;
+    MemberDef *categoryRelation = 0;
     QCString declFileName;
-    int declLine;
-    int declColumn;
-    int numberOfFlowKW;
+    int declLine = 0;
+    int declColumn = 0;
+    int numberOfFlowKW = 0;
 };
 
 MemberDefImpl::IMPL::IMPL() :
diff -up doxygen-1.8.16/src/membergroup.h.orig doxygen-1.8.16/src/membergroup.h
--- doxygen-1.8.16/src/membergroup.h.orig	2019-12-10 11:45:32.754260502 +0100
+++ doxygen-1.8.16/src/membergroup.h	2019-12-10 11:54:06.767797449 +0100
@@ -101,18 +101,18 @@ class MemberGroup
     int docLine() const { return m_docLine; }
 
   private: 
-    MemberList *memberList;      // list of all members in the group
-    MemberList *inDeclSection;
-    int grpId;
+    MemberList *memberList = 0;      // list of all members in the group
+    MemberList *inDeclSection = 0;
+    int grpId = 0;
     QCString grpHeader;
     QCString fileName;           // base name of the generated file
     QCString doc;
-    bool inSameSection;
-    int  m_numDecMembers;
-    int  m_numDocMembers;
-    const Definition *m_parent;
+    bool inSameSection = false;
+    int  m_numDecMembers = 0;
+    int  m_numDocMembers = 0;
+    const Definition *m_parent = 0;
     QCString m_docFile;
-    int m_docLine;
+    int m_docLine = 0;
     QList<ListItemInfo> *m_xrefListItems;
 };
 
diff -up doxygen-1.8.16/src/scanner.l.orig doxygen-1.8.16/src/scanner.l
--- doxygen-1.8.16/src/scanner.l.orig	2019-12-10 11:45:32.756260520 +0100
+++ doxygen-1.8.16/src/scanner.l	2019-12-10 11:54:52.099199108 +0100
@@ -191,7 +191,7 @@ static QCString         g_delimiter;
 static int              g_column;
 
 static int              g_fencedSize=0;
-static bool             g_nestedComment=0;
+static bool             g_nestedComment=false;
 
 //-----------------------------------------------------------------------------
 
diff -up doxygen-1.8.16/src/tclscanner.l.orig doxygen-1.8.16/src/tclscanner.l
--- doxygen-1.8.16/src/tclscanner.l.orig	2019-08-04 19:05:12.000000000 +0200
+++ doxygen-1.8.16/src/tclscanner.l	2019-12-10 11:45:32.757260529 +0100
@@ -1492,7 +1492,7 @@ tcl_inf("-> %s\n",(const char *)tcl.stri
     {
 tcl_inf("-> %s\n",(const char *)tcl.string_comment);
       int myPos=0;
-      bool myNew=0;
+      bool myNew=false;
       int myLine=tcl.line_comment;
       BufStr myI(1024);
       BufStr myO(1024);
diff -up doxygen-1.8.16/src/vhdldocgen.h.orig doxygen-1.8.16/src/vhdldocgen.h
--- doxygen-1.8.16/src/vhdldocgen.h.orig	2019-06-10 10:17:24.000000000 +0200
+++ doxygen-1.8.16/src/vhdldocgen.h	2019-12-10 11:45:32.757260529 +0100
@@ -310,11 +310,11 @@ class FlowChart
     ~FlowChart();
 
 private:
-    int id;
-    int stamp;
-    int type;
+    int id = 0;
+    int stamp = 0;
+    int type = 0;
 
-    int line;
+    int line = 0;
 
     QCString label;
     QCString text;
diff -up doxygen-1.8.16/src/vhdljjparser.h.orig doxygen-1.8.16/src/vhdljjparser.h
--- doxygen-1.8.16/src/vhdljjparser.h.orig	2019-06-10 10:17:24.000000000 +0200
+++ doxygen-1.8.16/src/vhdljjparser.h	2019-12-10 11:45:32.758260538 +0100
@@ -87,9 +87,9 @@ struct VhdlConfNode
   QCString arch;
   QCString binding;
   QCString compSpec;
-  int level;
-  bool isLeaf;
-  bool isInlineConf;
+  int level = 0;
+  bool isLeaf = false;
+  bool isInlineConf = false;
 
 };
 
diff -up doxygen-1.8.16/src/clangparser.cpp.me doxygen-1.8.16/src/clangparser.cpp
--- doxygen-1.8.16/src/clangparser.cpp.me	2019-12-10 12:08:46.334638776 +0100
+++ doxygen-1.8.16/src/clangparser.cpp	2019-12-10 12:08:59.291755101 +0100
@@ -174,7 +174,7 @@ void ClangParser::start(const char *file
   std::string error;
   // load a clang compilation database (https://clang.llvm.org/docs/JSONCompilationDatabase.html)
   // this only needs to be loaded once, and could be refactored to a higher level function
-  static std::unique_ptr<clang::tooling::CompilationDatabase> db =
+  static std::shared_ptr<clang::tooling::CompilationDatabase> db =
       clang::tooling::CompilationDatabase::loadFromDirectory(clangCompileDatabase.data(), error);
   int clang_option_len = 0;
   std::vector<clang::tooling::CompileCommand> command;
diff -up doxygen-1.8.16/src/doxygen.cpp.me doxygen-1.8.16/src/doxygen.cpp
--- doxygen-1.8.16/src/doxygen.cpp.me	2019-12-10 12:05:44.254007471 +0100
+++ doxygen-1.8.16/src/doxygen.cpp	2019-12-10 12:07:24.286903381 +0100
@@ -520,7 +520,7 @@ static void addSTLClasses(Entry *root)
       addSTLMember(classEntry,info->templType2,info->templName2);
     }
     if (fullName=="std::auto_ptr" || fullName=="std::smart_ptr" || fullName=="std::shared_ptr" ||
-        fullName=="std::unique_ptr" || fullName=="std::weak_ptr")
+        fullName=="std::shared_ptr" || fullName=="std::weak_ptr")
     {
       Entry *memEntry = new Entry;
       memEntry->name       = "operator->";