Binary compatibility report for the Clipper library between 6.0.0 and 6.1.0 versions on x86
Test Info
Library Name | Clipper |
Version #1 | 6.0.0 |
Version #2 | 6.1.0 |
CPU Type | x86 |
GCC Version | 4.6.1 |
Test Results
Total Header Files | 1 |
Total Shared Libraries | 1 |
Total Symbols / Types | 64 / 53 |
Verdict | Incompatible (54.7%) |
Problem Summary
| Severity | Count |
---|
Added Symbols | - | 13 |
Removed Symbols | High | 13 |
Problems with Data Types | High | 3 |
Medium | 1 |
Low | 6 |
Problems with Symbols | High | 1 |
Medium | 0 |
Low | 0 |
Problems with Constants | Low | 0 |
Added Symbols (13)
clipper.hpp,
libpolyclipping.so.14.0.0
namespace ClipperLib
ClipperBase::ProcessBound ( struct TEdge* E, bool IsClockwise )
[symbol: _ZN10ClipperLib11ClipperBase12ProcessBoundEPNS_5TEdgeEb]
ClipperOffset::AddPath ( Path const& path, enum JoinType joinType, enum EndType endType )
[symbol: _ZN10ClipperLib13ClipperOffset7AddPathERKSt6vectorINS_8IntPointESaIS2_EENS_8JoinTypeENS_7EndTypeE]
ClipperOffset::AddPaths ( Paths const& paths, enum JoinType joinType, enum EndType endType )
[symbol: _ZN10ClipperLib13ClipperOffset8AddPathsERKSt6vectorIS1_INS_8IntPointESaIS2_EESaIS4_EENS_8JoinTypeENS_7EndTypeE]
ClipperOffset::Clear ( )
[symbol: _ZN10ClipperLib13ClipperOffset5ClearEv]
ClipperOffset::ClipperOffset [in-charge] ( double miterLimit, double roundPrecision )
[symbol: _ZN10ClipperLib13ClipperOffsetC1Edd]
ClipperOffset::ClipperOffset [not-in-charge] ( double miterLimit, double roundPrecision )
[symbol: _ZN10ClipperLib13ClipperOffsetC2Edd]
ClipperOffset::Execute ( Paths& solution, double delta )
[symbol: _ZN10ClipperLib13ClipperOffset7ExecuteERSt6vectorIS1_INS_8IntPointESaIS2_EESaIS4_EEd]
ClipperOffset::Execute ( PolyTree& solution, double delta )
[symbol: _ZN10ClipperLib13ClipperOffset7ExecuteERNS_8PolyTreeEd]
ClipperOffset::~ClipperOffset [in-charge] ( )
[symbol: _ZN10ClipperLib13ClipperOffsetD1Ev]
ClipperOffset::~ClipperOffset [not-in-charge] ( )
[symbol: _ZN10ClipperLib13ClipperOffsetD2Ev]
MinkowskiDiff ( Path const& poly, Path const& path, Paths& solution, bool isClosed )
[symbol: _ZN10ClipperLib13MinkowskiDiffERKSt6vectorINS_8IntPointESaIS1_EES5_RS0_IS3_SaIS3_EEb]
MinkowskiSum ( Path const& poly, Path const& path, Paths& solution, bool isClosed )
[symbol: _ZN10ClipperLib12MinkowskiSumERKSt6vectorINS_8IntPointESaIS1_EES5_RS0_IS3_SaIS3_EEb]
OffsetPaths ( Paths const& in_polys, Paths& out_polys, double delta, enum JoinType jointype, enum EndType_ endtype, double limit )
[symbol: _ZN10ClipperLib11OffsetPathsERKSt6vectorIS0_INS_8IntPointESaIS1_EESaIS3_EERS5_dNS_8JoinTypeENS_8EndType_Ed]
to the top
Removed Symbols (13)
clipper.hpp,
libpolyclipping.so.12.0.0
namespace ClipperLib
ClipperBase::AddBoundsToLML ( struct TEdge* e, bool IsClosed )
[symbol: _ZN10ClipperLib11ClipperBase14AddBoundsToLMLEPNS_5TEdgeEb]
ClipperBase::AddPolygon ( Path const& pg, enum PolyType PolyTyp )
[symbol: _ZN10ClipperLib11ClipperBase10AddPolygonERKSt6vectorINS_8IntPointESaIS2_EENS_8PolyTypeE]
ClipperBase::AddPolygons ( Paths const& ppg, enum PolyType PolyTyp )
[symbol: _ZN10ClipperLib11ClipperBase11AddPolygonsERKSt6vectorIS1_INS_8IntPointESaIS2_EESaIS4_EENS_8PolyTypeE]
ClipperBase::AscendToMax ( struct TEdge*& E, bool Appending, bool IsClosed )
[symbol: _ZN10ClipperLib11ClipperBase11AscendToMaxERPNS_5TEdgeEbb]
ClipperBase::DescendToMin ( struct TEdge*& E )
[symbol: _ZN10ClipperLib11ClipperBase12DescendToMinERPNS_5TEdgeE]
ClipperBase::DoMinimaLML ( struct TEdge* E1, struct TEdge* E2, bool IsClosed )
[symbol: _ZN10ClipperLib11ClipperBase11DoMinimaLMLEPNS_5TEdgeES2_b]
MinkowkiDiff ( Path const& poly, Path const& path, Paths& solution, bool isClosed )
[symbol: _ZN10ClipperLib12MinkowkiDiffERKSt6vectorINS_8IntPointESaIS1_EES5_RS0_IS3_SaIS3_EEb]
MinkowkiSum ( Path const& poly, Path const& path, Paths& solution, bool isClosed )
[symbol: _ZN10ClipperLib11MinkowkiSumERKSt6vectorINS_8IntPointESaIS1_EES5_RS0_IS3_SaIS3_EEb]
OffsetPaths ( Paths const& in_polys, Paths& out_polys, double delta, enum JoinType jointype, enum EndType endtype, double limit )
[symbol: _ZN10ClipperLib11OffsetPathsERKSt6vectorIS0_INS_8IntPointESaIS1_EESaIS3_EERS5_dNS_8JoinTypeENS_7EndTypeEd]
OffsetPolygons ( Polygons const& in_polys, Polygons& out_polys, double delta, enum JoinType jointype, double limit, bool autoFix )
[symbol: _ZN10ClipperLib14OffsetPolygonsERKSt6vectorIS0_INS_8IntPointESaIS1_EESaIS3_EERS5_dNS_8JoinTypeEdb]
PolyTreeToPolygons ( PolyTree const& polytree, Paths& paths )
[symbol: _ZN10ClipperLib18PolyTreeToPolygonsERKNS_8PolyTreeERSt6vectorIS3_INS_8IntPointESaIS4_EESaIS6_EE]
ReversePolygon ( Path& p )
[symbol: _ZN10ClipperLib14ReversePolygonERSt6vectorINS_8IntPointESaIS1_EE]
ReversePolygons ( Paths& p )
[symbol: _ZN10ClipperLib15ReversePolygonsERSt6vectorIS0_INS_8IntPointESaIS1_EESaIS3_EE]
to the top
Problems with Data Types, High Severity (3)
clipper.hpp
namespace ClipperLib
[+] class Clipper (1)
| Change |
Effect |
1 | Size of this class has been increased from 128 bytes to 136 bytes. | 1) An object of this class can be allocated by the applications and old size will be hardcoded at the compile time. Call of any exported constructor will break the memory of neighboring objects on the stack or heap. 2) The memory layout and size of subclasses will be changed. |
[+] affected symbols (7)
Clipper::Clear ( )This method is from 'Clipper' class.
Clipper::Clipper [in-charge] ( int initOptions )This constructor is from 'Clipper' class.
Clipper::Execute ( enum ClipType clipType, PolyTree& polytree, enum PolyFillType subjFillType, enum PolyFillType clipFillType )This method is from 'Clipper' class.
Clipper::Execute ( enum ClipType clipType, Paths& solution, enum PolyFillType subjFillType, enum PolyFillType clipFillType )This method is from 'Clipper' class.
Clipper::ExecuteInternal ( )This method is from 'Clipper' class.
Clipper::Reset ( )This method is from 'Clipper' class.
Clipper::~Clipper [in-charge] ( )This method is from 'Clipper' class.
[+] class PolyNode (1)
| Change |
Effect |
1 | Size of this class has been increased from 36 bytes to 44 bytes. | 1) An object of this class can be allocated by the applications and old size will be hardcoded at the compile time. Call of any exported constructor will break the memory of neighboring objects on the stack or heap. 2) The memory layout and size of subclasses will be changed. |
[+] affected symbols (8)
PolyNode::ChildCount ( ) constThis method is from 'PolyNode' class.
PolyNode::GetNext ( ) constThis method is from 'PolyNode' class.
PolyNode::IsHole ( ) constThis method is from 'PolyNode' class.
PolyNode::IsOpen ( ) constThis method is from 'PolyNode' class.
PolyNode::PolyNode [in-charge] ( )This constructor is from 'PolyNode' class.
PolyTree::Clear ( )This method is from derived class 'PolyTree'.
PolyTree::GetFirst ( ) constThis method is from derived class 'PolyTree'.
PolyTree::Total ( ) constThis method is from derived class 'PolyTree'.
[+] class PolyTree (1)
| Change |
Effect |
1 | Size of this class has been changed from 48 bytes to 56 bytes. | 1) The class has only inline or auto-generated constructors which will be copied to applications at compile time and will allocate an older memory layout. Call of any exported method of this class may access a memory outside the allocated objects or inside the older memory structure and result in crash or incorrect behavior of applications. 2) The memory layout and size of subclasses will be changed. |
[+] affected symbols (7)
Clipper::Execute ( enum ClipType clipType, PolyTree& polytree, enum PolyFillType subjFillType, enum PolyFillType clipFillType )2nd parameter 'polytree' (reference) has base type 'PolyTree'.
ClosedPathsFromPolyTree ( PolyTree const& polytree, Paths& paths )1st parameter 'polytree' (reference) has base type 'PolyTree'.
OpenPathsFromPolyTree ( PolyTree& polytree, Paths& paths )1st parameter 'polytree' (reference) has base type 'PolyTree'.
PolyTree::Clear ( )This method is from 'PolyTree' class.
PolyTree::GetFirst ( ) constThis method is from 'PolyTree' class.
PolyTree::Total ( ) constThis method is from 'PolyTree' class.
PolyTreeToPaths ( PolyTree const& polytree, Paths& paths )1st parameter 'polytree' (reference) has base type 'PolyTree'.
to the top
Problems with Symbols, High Severity (1)
clipper.hpp,
libpolyclipping.so.12.0.0
namespace ClipperLib
[+] OffsetPaths ( Paths const& in_polys, Paths& out_polys, double delta, enum JoinType jointype, enum EndType endtype, double limit ) (1)
changed to:OffsetPaths ( Paths const& in_polys, Paths& out_polys, double delta, enum JoinType jointype, enum EndType_ endtype, double limit )
[symbol: _ZN10ClipperLib11OffsetPathsERKSt6vectorIS0_INS_8IntPointESaIS1_EESaIS3_EERS5_dNS_8JoinTypeENS_7EndTypeEd]
| Change | Effect |
---|
1 | Parameters list has been changed. | The name of the appropriate symbol for this function on binary level has been changed from _ZN10ClipperLib11OffsetPathsERKSt6vectorIS0_INS_8IntPointESaIS1_EESaIS3_EERS5_dNS_8JoinTypeENS_7EndTypeEd to _ZN10ClipperLib11OffsetPathsERKSt6vectorIS0_INS_8IntPointESaIS1_EESaIS3_EERS5_dNS_8JoinTypeENS_8EndType_Ed. This may cause "undefined reference" linker error in old client applications. |
to the top
Problems with Data Types, Medium Severity (1)
clipper.hpp
namespace ClipperLib
[+] class Clipper (1)
| Change |
Effect |
1 | The layout of v-table has been changed for unknown reason. | Call of any method in this class may result in crash or incorrect behavior of applications. |
[+] show v-table (old and new)
Offset | Virtual Table (Old) - 17 entries | Virtual Table (New) - 17 entries |
---|
0 |
96u |
104u |
4 |
(int (*)(...))0 |
(int (*)(...))0 |
8 |
(int (*)(...))(& typeinfo) |
(int (*)(...))(& typeinfo) |
12 |
~Clipper |
~Clipper |
16 |
~Clipper |
~Clipper |
20 |
Clipper::Clear |
Clipper::Clear |
24 |
Clipper::Reset |
Clipper::Reset |
28 |
Clipper::ExecuteInternal |
Clipper::ExecuteInternal |
32 |
-96u |
-104u |
36 |
-96u |
-104u |
40 |
-96u |
-104u |
44 |
(int (*)(...))-0x000000060 |
(int (*)(...))-0x000000068 |
48 |
(int (*)(...))(& typeinfo) |
(int (*)(...))(& typeinfo) |
52 |
Clipper::_ZTv0_n12_N10ClipperLib7ClipperD1Ev |
Clipper::_ZTv0_n12_N10ClipperLib7ClipperD1Ev |
56 |
Clipper::_ZTv0_n12_N10ClipperLib7ClipperD0Ev |
Clipper::_ZTv0_n12_N10ClipperLib7ClipperD0Ev |
60 |
Clipper::_ZTv0_n16_N10ClipperLib7Clipper5ClearEv |
Clipper::_ZTv0_n16_N10ClipperLib7Clipper5ClearEv |
64 |
Clipper::_ZTv0_n20_N10ClipperLib7Clipper5ResetEv |
Clipper::_ZTv0_n20_N10ClipperLib7Clipper5ResetEv |
[+] affected symbols (7)
Clipper::Clear ( )This method is from 'Clipper' class.
Clipper::Clipper [in-charge] ( int initOptions )This constructor is from 'Clipper' class.
Clipper::Execute ( enum ClipType clipType, PolyTree& polytree, enum PolyFillType subjFillType, enum PolyFillType clipFillType )This method is from 'Clipper' class.
Clipper::Execute ( enum ClipType clipType, Paths& solution, enum PolyFillType subjFillType, enum PolyFillType clipFillType )This method is from 'Clipper' class.
Clipper::ExecuteInternal ( )This method is from 'Clipper' class.
Clipper::Reset ( )This method is from 'Clipper' class.
Clipper::~Clipper [in-charge] ( )This method is from 'Clipper' class.
to the top
Problems with Data Types, Low Severity (6)
clipper.hpp
namespace ClipperLib
[+] class Clipper (2)
| Change |
Effect |
1 | Field m_IntersectList has been added to this type. | Size of the inclusive type has been changed. NOTE: this field should be accessed only from the new library functions, otherwise it may result in crash or incorrect behavior of applications. |
2 | Field m_IntersectNodes has been removed from this type. | Size of the inclusive type has been changed. |
[+] affected symbols (7)
Clipper::Clear ( )This method is from 'Clipper' class.
Clipper::Clipper [in-charge] ( int initOptions )This constructor is from 'Clipper' class.
Clipper::Execute ( enum ClipType clipType, PolyTree& polytree, enum PolyFillType subjFillType, enum PolyFillType clipFillType )This method is from 'Clipper' class.
Clipper::Execute ( enum ClipType clipType, Paths& solution, enum PolyFillType subjFillType, enum PolyFillType clipFillType )This method is from 'Clipper' class.
Clipper::ExecuteInternal ( )This method is from 'Clipper' class.
Clipper::Reset ( )This method is from 'Clipper' class.
Clipper::~Clipper [in-charge] ( )This method is from 'Clipper' class.
[+] class PolyNode (4)
| Change |
Effect |
1 | Field m_endtype has been added to this type. | Size of the inclusive type has been changed. NOTE: this field should be accessed only from the new library functions, otherwise it may result in crash or incorrect behavior of applications. |
2 | Field m_jointype has been added to this type. | Size of the inclusive type has been changed. NOTE: this field should be accessed only from the new library functions, otherwise it may result in crash or incorrect behavior of applications. |
3 | The relative position of private field Index has been changed from 4 to 3. | Size of the inclusive type has been changed. |
4 | The relative position of private field m_IsOpen has been changed from 3 to 4. | Size of the inclusive type has been changed. |
[+] affected symbols (6)
PolyNode::ChildCount ( ) constThis method is from 'PolyNode' class.
PolyNode::GetNext ( ) constThis method is from 'PolyNode' class.
PolyNode::IsHole ( ) constThis method is from 'PolyNode' class.
PolyNode::IsOpen ( ) constThis method is from 'PolyNode' class.
PolyNode::PolyNode [in-charge] ( )This constructor is from 'PolyNode' class.
PolyTree::GetFirst ( ) constReturn value (pointer) has base type 'PolyNode'.
to the top
Header Files (1)
clipper.hpp
to the top
Shared Libraries (1)
libpolyclipping.so.12.0.0
to the top