On Sun, 2004-03-07 at 13:54, bulia byak wrote:
the behavior is shape-dependent; you can have a single cubic bezier patch rendering with one value of the 2nd control point, and if you move that point slightly, it won't render anymore.
So you're observing that behavior? Great, that gives me hope :)
that's much like the intersector bugs i was having, so i suppose it's the ConvertToShape() eating the stroke, either because the input is incorrect, or because it failed to uncross the polygon.
I don't know :( Anyone?
==6706== Use of uninitialised value of size 8 ==6706== at 0x81E6D54: Shape::edge_data::edge_data(Shape::edge_data const&) (Shape.cpp:1547) ==6706== by 0x81E38D0: Shape::SwapEdges(int, int) (Shape.cpp:1547) ==6706== by 0x81E2535: Shape::SubEdge(int) (Shape.cpp:1381) ==6706== by 0x81EFA6F: Shape::ConvertToShape(Shape*, fill_typ, bool) (ShapeSweep.cpp:852) ==6706== ==6706== Use of uninitialised value of size 8 ==6706== at 0x81E6CDE: Shape::edge_data::operator=(Shape::edge_data const&) (Shape.cpp:1548) ==6706== by 0x81E3902: Shape::SwapEdges(int, int) (Shape.cpp:1548) ==6706== by 0x81E2535: Shape::SubEdge(int) (Shape.cpp:1381) ==6706== by 0x81EFA6F: Shape::ConvertToShape(Shape*, fill_typ, bool) (ShapeSweep.cpp:852) ==6706==
I get more than 30000[sic] such errors when starting Inkscape under valgrind.
It looks like some Shape::edge_datas are being used without being fully initialized.
You can get away with that under Linux often because memory is usually allocated by mmap()ing /dev/zero (so freshly-allocated memory will be zero-filled).
The Win32 allocator obviously does not od that.
Anyway, it's not safe to use uninitialized memory anyway -- I'm sure the same bug manifests itself under Linux sometimes when memory is reused, though much more rarely.
-mental