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]
