On Saturday 04 March 2006 11:50, AJ MacLeod wrote:
> It's very possible that the other segfaults I was seeing were related to or
> a consequence of the problem you've just produced a fix for - I'd like us
> to test that fix and see what we find, rather than possibly wasting
> anyone's time tracking down already-fixed bugs. Also, I've mislaid the
> other segfaults I was keeping note of :-)
Ok, attached it here.
> I should mention that I think everyone who's tried has noticed the
> improvement in smoothness...
Ok, thanks. I am not entirely satisfied with that. But I believe that the
remaining jerky movement will be *much* harder to fix ...
For the radar problems you will still need the prevous fix I sent to the list.
Greetings
Mathias
--
Mathias Fröhlich, email: [EMAIL PROTECTED]
Index: simgear/props/props.cxx
===================================================================
RCS file: /var/cvs/SimGear-0.3/SimGear/simgear/props/props.cxx,v
retrieving revision 1.21
diff -u -r1.21 props.cxx
--- simgear/props/props.cxx 7 Feb 2006 20:50:35 -0000 1.21
+++ simgear/props/props.cxx 4 Mar 2006 10:14:00 -0000
@@ -250,7 +250,7 @@
* Locate a child node by name and index.
*/
static int
-find_child (const char * name, int index, vector<SGPropertyNode_ptr> nodes)
+find_child (const char * name, int index, const vector<SGPropertyNode_ptr>& nodes)
{
int nNodes = nodes.size();
for (int i = 0; i < nNodes; i++) {
@@ -749,6 +749,11 @@
*/
SGPropertyNode::~SGPropertyNode ()
{
+ // zero out all parent pointers, else they might be dangling
+ for (unsigned i = 0; i < _children.size(); ++i)
+ _children[i]->_parent = 0;
+ for (unsigned i = 0; i < _removedChildren.size(); ++i)
+ _removedChildren[i]->_parent = 0;
delete _path_cache;
clearValue();
delete _listeners;