<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: pb with explode and AcDbVoidPtrArray in ObjectARX Forum</title>
    <link>https://forums.autodesk.com/t5/objectarx-forum/pb-with-explode-and-acdbvoidptrarray/m-p/3789844#M15505</link>
    <description>&lt;P&gt;Maybe you post yours code?&lt;/P&gt;</description>
    <pubDate>Mon, 25 Feb 2013 22:29:53 GMT</pubDate>
    <dc:creator>Alexander.Rivilis</dc:creator>
    <dc:date>2013-02-25T22:29:53Z</dc:date>
    <item>
      <title>pb with explode and AcDbVoidPtrArray</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/pb-with-explode-and-acdbvoidptrarray/m-p/3140474#M15499</link>
      <description>&lt;P&gt;Dear All,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a pb with using explode and especialy with AcDbVoidPtrArray.&lt;/P&gt;&lt;P&gt;I upgrade&amp;nbsp; my code from VS2008 to VS2010 and autocad 2011 and 2012.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And now when I execute this code I have a crash when the application try to free memory for the entitySet (AcDbVoidPtrArray﻿). It's very strange because the same code works fine in VS2008 and AutoCad2010.&lt;/P&gt;&lt;P&gt;I tried to free and close all pointers but I still have the same pb.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The aim of this code is to find the crossing point between two lines (one of the two line is in a block). The result is ok (I found the point) but I have a Acad error :in acarray.h :&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;template &amp;lt;class T, class R&amp;gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;&lt;EM&gt;AcArray&amp;lt;T,R&amp;gt;::~AcArray()&lt;/EM&gt;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;&lt;EM&gt;{&lt;/EM&gt;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (mpArray != NULL)&lt;/EM&gt;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delete[] mpArray;&lt;/EM&gt;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;&lt;EM&gt;}﻿&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;and then in free.c&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;oid __cdecl _free_base (void * pBlock)&lt;/EM&gt;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;&lt;EM&gt;{&lt;/EM&gt;&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int retval = 0;&lt;/EM&gt;&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (pBlock == NULL)&lt;/EM&gt;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;/EM&gt;&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RTCCALLBACK(_RTC_Free_hook, (pBlock, 0));&lt;/EM&gt;&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; retval = HeapFree(_crtheap, 0, pBlock);&lt;/EM&gt;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (retval == 0)&lt;/EM&gt;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/EM&gt;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; errno = _get_errno_from_oserr(GetLastError());&lt;/EM&gt;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/EM&gt;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;&lt;EM&gt;}﻿&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;[Code begin]&lt;/P&gt;&lt;P&gt;&amp;nbsp;AcDbEntity *pCurRefEnt;&lt;BR /&gt;&amp;nbsp;AcGePoint3dArray TestintersectionPoints;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;AcDbBlockReference *pBlockRef = AcDbBlockReference::cast (pEnt1);&lt;BR /&gt;&amp;nbsp;if (pBlockRef != NULL)&lt;BR /&gt;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; AcDbVoidPtrArray entitySet;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; // explode the block, this will return a load of pre-transfromed entities for our perusal&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; Acad::ErrorStatus es = pBlockRef-&amp;gt;explode (entitySet);&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; // if it worked ok&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; if (es == Acad::eOk)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // loop round getting the intersection points&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; entitySet.length(); i++)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pCurRefEnt = (AcDbEntity*)entitySet.at(i);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if ((pCurRefEnt-&amp;gt;isKindOf(AcDbLine::desc())) &amp;amp;&amp;amp; (TestintersectionPoints.isEmpty()))&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Acad::ErrorStatus es1 = pCurRefEnt-&amp;gt;intersectWith (pEnt2, AcDb::kOnBothOperands, TestintersectionPoints);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pCurRefEnt-&amp;gt;close();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; delete pCurRefEnt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; TestintersectionPoints.setLogicalLength(0);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; entitySet.setLogicalLength(0);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; pBlockRef-&amp;gt;close();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; entitySet.removeAll();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; pEnt2-&amp;gt;close();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; pEnt1-&amp;gt;close();&lt;BR /&gt;&amp;nbsp;}﻿==&amp;gt; acad.exe error!!!&lt;/P&gt;&lt;P&gt;[Code End]&lt;/P&gt;</description>
      <pubDate>Tue, 30 Aug 2011 09:04:22 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/pb-with-explode-and-acdbvoidptrarray/m-p/3140474#M15499</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2011-08-30T09:04:22Z</dc:date>
    </item>
    <item>
      <title>Re: pb with explode and AcDbVoidPtrArray</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/pb-with-explode-and-acdbvoidptrarray/m-p/3140498#M15500</link>
      <description>&lt;P&gt;Hi Sebastien,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Try not to "Close" the "pCurRefEnt"... It is an exploded entity, so it isn't database resident, therefore closing it doesn't make much sense. You should simply delete it as you do at the nd of the loop.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I hope it helps.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Philippe Leefsma&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt;&lt;BR /&gt;&lt;/EM&gt;&lt;EM&gt;Developer Consultant&lt;/EM&gt;&lt;EM&gt;&lt;BR /&gt;&lt;/EM&gt;&lt;EM&gt;Developer Technical Services&lt;/EM&gt;&lt;EM&gt;&lt;BR /&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&amp;nbsp;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;A href="http://www.autodesk.com/joinadn" target="_blank"&gt;www.autodesk.com/joinadn&lt;/A&gt;&lt;/EM&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 30 Aug 2011 10:21:37 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/pb-with-explode-and-acdbvoidptrarray/m-p/3140498#M15500</guid>
      <dc:creator>philippe.leefsma</dc:creator>
      <dc:date>2011-08-30T10:21:37Z</dc:date>
    </item>
    <item>
      <title>Re: pb with explode and AcDbVoidPtrArray</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/pb-with-explode-and-acdbvoidptrarray/m-p/3140944#M15501</link>
      <description>&lt;P&gt;Closing a non-DBR entity should be harmless. If this is the reason for the crash, then there is a bug in the object's implementation or related code.&lt;/P&gt;</description>
      <pubDate>Tue, 30 Aug 2011 14:40:01 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/pb-with-explode-and-acdbvoidptrarray/m-p/3140944#M15501</guid>
      <dc:creator>owenwengerd</dc:creator>
      <dc:date>2011-08-30T14:40:01Z</dc:date>
    </item>
    <item>
      <title>Re: pb with explode and AcDbVoidPtrArray</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/pb-with-explode-and-acdbvoidptrarray/m-p/3141162#M15502</link>
      <description>&lt;P&gt;I do confirm that removing the fact to close the pointer doesn't change anything.&lt;/P&gt;&lt;P&gt;I still have a crash when Acad try to release the mpArray of the entityset. Even if I do a removeall of the entityset and if I put logicallength to 0.&lt;/P&gt;&lt;P&gt;Perhaps if I could release the pointer (?) because Acad test if this pointer is !=Null, but of course this pointer is read only.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks for your help, if you have another suggest, you are welcome.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;</description>
      <pubDate>Tue, 30 Aug 2011 16:32:50 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/pb-with-explode-and-acdbvoidptrarray/m-p/3141162#M15502</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2011-08-30T16:32:50Z</dc:date>
    </item>
    <item>
      <title>Re: pb with explode and AcDbVoidPtrArray</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/pb-with-explode-and-acdbvoidptrarray/m-p/3143050#M15503</link>
      <description>Hi, don't know if this causes the crash, but pEnt1 and pBlockRef are pointing to the same object (entity), and you call close on both pointers. Arnold</description>
      <pubDate>Wed, 31 Aug 2011 19:36:45 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/pb-with-explode-and-acdbvoidptrarray/m-p/3143050#M15503</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2011-08-31T19:36:45Z</dc:date>
    </item>
    <item>
      <title>Re: pb with explode and AcDbVoidPtrArray</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/pb-with-explode-and-acdbvoidptrarray/m-p/3789682#M15504</link>
      <description>&lt;P&gt;Has anyone found a solution to this problem? I am experiencing very similar behaviour. I try to delete an entity from an &lt;SPAN&gt;AcDbVoidPt&lt;/SPAN&gt;&lt;SPAN&gt;rArray&lt;/SPAN&gt;&amp;nbsp;of exploded entities and I get a crash. Entities that I am deleting are not database resident so according to documentation of explode() function, I should delete them myself.&lt;/P&gt;</description>
      <pubDate>Mon, 25 Feb 2013 20:13:57 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/pb-with-explode-and-acdbvoidptrarray/m-p/3789682#M15504</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2013-02-25T20:13:57Z</dc:date>
    </item>
    <item>
      <title>Re: pb with explode and AcDbVoidPtrArray</title>
      <link>https://forums.autodesk.com/t5/objectarx-forum/pb-with-explode-and-acdbvoidptrarray/m-p/3789844#M15505</link>
      <description>&lt;P&gt;Maybe you post yours code?&lt;/P&gt;</description>
      <pubDate>Mon, 25 Feb 2013 22:29:53 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/objectarx-forum/pb-with-explode-and-acdbvoidptrarray/m-p/3789844#M15505</guid>
      <dc:creator>Alexander.Rivilis</dc:creator>
      <dc:date>2013-02-25T22:29:53Z</dc:date>
    </item>
  </channel>
</rss>

