To comment on the following update, log in, then open the issue:
http://www.openoffice.org/issues/show_bug.cgi?id=107271
                 Issue #|107271
                 Summary|vcl: X11SalGraphics::drawPolyPolygon invalid iterator
               Component|gsl
                 Version|DEV300m65
                Platform|All
                     URL|
              OS/Version|All
                  Status|NEW
       Status whiteboard|
                Keywords|
              Resolution|
              Issue type|PATCH
                Priority|P3
            Subcomponent|code
             Assigned to|pl
             Reported by|cmc





------- Additional comments from [email protected] Fri Nov 27 15:00:49 +0000 
2009 -------
In a multiset "Erasing an element from a multiset also does not invalidate any
iterators, except, of course, for iterators that actually point to the element
that is being erased." We have some code though in
X11SalGraphics::drawPolyPolygon where we don't handle correctly erasing such an
iterator when it happens to point to the beginning of the multiset, giving....

==8722== Invalid read of size 8
==8722==    at 0x30D946DE30: std::_Rb_tree_increment(std::_Rb_tree_node_base*)
(in /usr/lib64/libstdc++.so.6.0.13)
==8722==    by 0xC6C8A7C: std::_Rb_tree_const_iterator<int>::operator++()
(stl_tree.h:259)
==8722==    by 0xC6BF589:
X11SalGraphics::drawPolyPolygon(basegfx::B2DPolyPolygon const&, double)
(salgdi.cxx:1430)
==8722==    by 0xC6BFF82: X11SalGraphics::drawPolyLine(basegfx::B2DPolygon
const&, basegfx::B2DVector const&, basegfx::B2DLineJoin) (salgdi.cxx:1623)
==8722==    by 0x7C680C2: SalGraphics::DrawPolyLine(basegfx::B2DPolygon const&,
basegfx::B2DVector const&, basegfx::B2DLineJoin, OutputDevice const*)
(salgdilayout.cxx:554)
==8722==    by 0x7BC04E9:
OutputDevice::ImpTryDrawPolyLineDirect(basegfx::B2DPolygon const&, double,
basegfx::B2DLineJoin) (outdev.cxx:2968)
==8722==    by 0x7BC440D: OutputDevice::DrawPolyLine(basegfx::B2DPolygon const&,
double, basegfx::B2DLineJoin) (outdev.cxx:3020)
==8722==    by 0xDBD11FA:
drawinglayer::processor2d::VclProcessor2D::RenderPolygonHairlinePrimitive2D(drawinglayer::primitive2d::PolygonHairlinePrimitive2D
const&, bool) (in 
/usr/lib64/openoffice.org/basis3.2/program/libdrawinglayerlx.so)
==8722==    by 0xDBD6296:
drawinglayer::processor2d::VclPixelProcessor2D::processBasePrimitive2D(drawinglayer::primitive2d::BasePrimitive2D
const&) (in /usr/lib64/openoffice.org/basis3.2/program/libdrawinglayerlx.so)
==8722==    by 0xDBCA941:
drawinglayer::processor2d::BaseProcessor2D::process(com::sun::star::uno::Sequence<com::sun::star::uno::Reference<com::sun::star::graphic::XPrimitive2D>
> const&) (in /usr/lib64/openoffice.org/basis3.2/program/libdrawinglayerlx.so)
==8722==    by 0xA63E40C: ??? (in
/usr/lib64/openoffice.org/basis3.2/program/libsvxcorelx.so)
==8722==    by 0xA63E8FF: ??? (in
/usr/lib64/openoffice.org/basis3.2/program/libsvxcorelx.so)
==8722==  Address 0xe8e4f08 is 24 bytes inside a block of size 40 free'd
==8722==    at 0x4A04D72: free (vg_replace_malloc.c:325)
==8722==    by 0xC6CA4FB: __gnu_cxx::new_allocator<std::_Rb_tree_node<int>
>::deallocate(std::_Rb_tree_node<int>*, unsigned long) (new_allocator.h:95)
==8722==    by 0xC6C6849: std::_Rb_tree<int, int, std::_Identity<int>,
(anonymous namespace)::TrapezoidXCompare, std::allocator<int>
>::_M_put_node(std::_Rb_tree_node<int>*) (stl_tree.h:363)
==8722==    by 0xC6C49FF: std::_Rb_tree<int, int, std::_Identity<int>,
(anonymous namespace)::TrapezoidXCompare, std::allocator<int>
>::_M_destroy_node(std::_Rb_tree_node<int>*) (stl_tree.h:384)
==8722==    by 0xC6C2EB9: std::_Rb_tree<int, int, std::_Identity<int>,
(anonymous namespace)::TrapezoidXCompare, std::allocator<int>
>::erase(std::_Rb_tree_const_iterator<int>) (stl_tree.h:1362)
==8722==    by 0xC6C1634: std::multiset<int, (anonymous
namespace)::TrapezoidXCompare, std::allocator<int>
>::erase(std::_Rb_tree_const_iterator<int>) (stl_multiset.h:464)
==8722==    by 0xC6BF391:
X11SalGraphics::drawPolyPolygon(basegfx::B2DPolyPolygon const&, double)
(salgdi.cxx:1449)
==8722==    by 0xC6BFF82: X11SalGraphics::drawPolyLine(basegfx::B2DPolygon
const&, basegfx::B2DVector const&, basegfx::B2DLineJoin) (salgdi.cxx:1623)
==8722==    by 0x7C680C2: SalGraphics::DrawPolyLine(basegfx::B2DPolygon const&,
basegfx::B2DVector const&, basegfx::B2DLineJoin, OutputDevice const*)
(salgdilayout.cxx:554)
==8722==    by 0x7BC04E9:
OutputDevice::ImpTryDrawPolyLineDirect(basegfx::B2DPolygon const&, double,
basegfx::B2DLineJoin) (outdev.cxx:2968)
==8722==    by 0x7BC440D: OutputDevice::DrawPolyLine(basegfx::B2DPolygon const&,
double, basegfx::B2DLineJoin) (outdev.cxx:3020)
==8722==    by 0xDBD11FA:
drawinglayer::processor2d::VclProcessor2D::RenderPolygonHairlinePrimitive2D(drawinglayer::primitive2d::PolygonHairlinePrimitive2D
const&, bool) (in 
/usr/lib64/openoffice.org/basis3.2/program/libdrawinglayerlx.so)

---------------------------------------------------------------------
Please do not reply to this automatically generated notification from
Issue Tracker. Please log onto the website and enter your comments.
http://qa.openoffice.org/issue_handling/project_issues.html#notification

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to