]> granicus.if.org Git - graphviz/commitdiff
fix: use public inheritance in VPSC hierarchy
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Sun, 3 Jan 2021 01:25:19 +0000 (17:25 -0800)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Mon, 15 Feb 2021 04:40:16 +0000 (20:40 -0800)
This removes some C++ undefined behavior where libvpsc casts of IncVPSC pointers
to VPSC pointers were invalid due to private inheritance. There was no need to
use private inheritance here, so we now simply use public inheritance. Fixes
#1874.

CHANGELOG.md
lib/vpsc/solve_VPSC.h

index 64a5933d9c13625607ca2f1790e9b2d99939ddf5..0559b26d724b7951f94389ced3e25f955793707e 100644 (file)
@@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 ### Fixed
 - typos in gpcanvas.c #1927
 - memory leak in libmingle
+- private inheritance in IncVPSC #1874
 
 ## [2.46.0] - 2021-02-13
 
index a295df967a0385ea922f15e2ea484c521e481b18..9aa931a23b0664a85e03da010303de2082eea8e7 100644 (file)
@@ -43,7 +43,7 @@ private:
        bool blockGraphIsCyclic();
 };
 
-struct IncVPSC : private VPSC {
+struct IncVPSC : VPSC {
 public:
        unsigned splitCnt;
        void satisfy();