<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7653.36">
<TITLE>LineSegmentIntersector LEAK-Problem?</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->
<BR>

<P><FONT SIZE=2 FACE="Arial">I traced the error now:</FONT>

<BR><FONT SIZE=2 FACE="Arial">The function LineSegementIntersector::getFirstIntersection() executes very well to the last bit that is:</FONT>

<BR><FONT SIZE=2 FACE="Arial">Dereference _intersections.begin();</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">It jumps therefor to xtree.h :</FONT>

<BR>       <SPAN LANG="de"> <FONT SIZE=2 FACE="Courier New">reference </FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Courier New">operator</FONT><FONT SIZE=2 FACE="Courier New">*() </FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Courier New">const</FONT></SPAN>

<BR><SPAN LANG="de">                        <FONT SIZE=2 FACE="Courier New">{       </FONT><FONT COLOR="#008000" SIZE=2 FACE="Courier New">// return designated value</FONT></SPAN>

<BR><SPAN LANG="de">                        <FONT COLOR="#0000FF" SIZE=2 FACE="Courier New">return</FONT><FONT SIZE=2 FACE="Courier New"> ((reference)**(const_iterator *)</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Courier New">this</FONT><FONT SIZE=2 FACE="Courier New">); <--TO HERE</FONT></SPAN>

<BR><SPAN LANG="de">                        <FONT SIZE=2 FACE="Courier New">}</FONT></SPAN>
</P>

<P><SPAN LANG="de"><FONT SIZE=2 FACE="Courier New">Afterwards it jumps for a reason that i dont understand to vector destructor and there to:</FONT></SPAN>
</P>

<P><SPAN LANG="de"><FONT COLOR="#0000FF" SIZE=2 FACE="Courier New">void</FONT><FONT SIZE=2 FACE="Courier New"> _Tidy()</FONT></SPAN>

<BR><SPAN LANG="de">                <FONT SIZE=2 FACE="Courier New">{       </FONT><FONT COLOR="#008000" SIZE=2 FACE="Courier New">// free all storage</FONT></SPAN>

<BR><SPAN LANG="de">                <FONT COLOR="#0000FF" SIZE=2 FACE="Courier New">if</FONT><FONT SIZE=2 FACE="Courier New"> (_Myfirst != 0)</FONT></SPAN>

<BR><SPAN LANG="de">                        <FONT SIZE=2 FACE="Courier New">{       </FONT><FONT COLOR="#008000" SIZE=2 FACE="Courier New">// something to free, destroy and deallocate it</FONT></SPAN>
</P>

<P><SPAN LANG="de"><FONT SIZE=2 FACE="Courier New"> </FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Courier New">#if</FONT><FONT SIZE=2 FACE="Courier New"> _HAS_ITERATOR_DEBUGGING</FONT></SPAN>

<BR><SPAN LANG="de">                        <FONT COLOR="#0000FF" SIZE=2 FACE="Courier New">this</FONT><FONT SIZE=2 FACE="Courier New">->_Orphan_all();</FONT></SPAN>

<BR><SPAN LANG="de"><FONT SIZE=2 FACE="Courier New"> </FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Courier New">#endif</FONT><FONT SIZE=2 FACE="Courier New"> </FONT><FONT COLOR="#008000" SIZE=2 FACE="Courier New">/* _HAS_ITERATOR_DEBUGGING */</FONT></SPAN>
</P>

<P><SPAN LANG="de">                        <FONT SIZE=2 FACE="Courier New">_Destroy(_Myfirst, _Mylast);</FONT></SPAN>

<BR><SPAN LANG="de">                        <FONT COLOR="#0000FF" SIZE=2 FACE="Courier New">this</FONT><FONT SIZE=2 FACE="Courier New">->_Alval.deallocate(_Myfirst, _Myend - _Myfirst); <--THIS IS THE POINT WHERE THE PROGRAM DIES</FONT></SPAN></P>

<P><SPAN LANG="de">                        <FONT SIZE=2 FACE="Courier New">}</FONT></SPAN>

<BR><SPAN LANG="de">                <FONT SIZE=2 FACE="Courier New">_Myfirst = 0, _Mylast = 0, _Myend = 0;</FONT></SPAN>

<BR><SPAN LANG="de">                <FONT SIZE=2 FACE="Courier New">}</FONT></SPAN>
</P>

<P><SPAN LANG="de"><FONT SIZE=2 FACE="Courier New">So it tries somehow to free items in a vector that doesnt exist (?)</FONT></SPAN>
</P>

<P><SPAN LANG="de"><FONT SIZE=2 FACE="Courier New">A solution for my pov is:</FONT></SPAN>

<BR><SPAN LANG="de"><FONT SIZE=2 FACE="Courier New">Instead of writing (picker is a LineSegementIntersector:</FONT></SPAN>

<BR><SPAN LANG="de"><FONT SIZE=2 FACE="Courier New">Picker->getFirstIntersection()->dowhatwever()</FONT></SPAN>

<BR><SPAN LANG="de"><FONT SIZE=2 FACE="Courier New">I write: </FONT></SPAN>

<BR><SPAN LANG="de"><FONT SIZE=2 FACE="Courier New">Picker->getIntersections().begin()->dowhatever();</FONT></SPAN>
</P>

<P><SPAN LANG="de"><FONT SIZE=2 FACE="Courier New">Still think there must be a bug somewhere at microsoft stl degubimpl or openscenegraph.</FONT></SPAN>
</P>
<BR>

<P><SPAN LANG="en-us"><FONT SIZE=2 FACE="Arial">Greetings,</FONT></SPAN>

<BR><SPAN LANG="en-us"><FONT SIZE=2 FACE="Arial">Hagen</FONT></SPAN>
</P>

</BODY>
</HTML>