<?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 Crashing at ~API_HotlinkNode() in Archicad C++ API</title>
    <link>https://community.graphisoft.com/t5/Archicad-C-API/Crashing-at-API-HotlinkNode/m-p/659584#M10274</link>
    <description>&lt;P&gt;Getting this message on the crash breakpoint:&lt;/P&gt;
&lt;P&gt;Critical error detected c0000374&lt;BR /&gt;A breakpoint instruction (__debugbreak() statement or a similar call) was executed in Archicad.exe.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This happened here:&lt;/P&gt;
&lt;PRE&gt;&lt;SPAN&gt;GS::Array&amp;lt;API_Guid&amp;gt;&amp;amp; hotlinks;&lt;BR /&gt;//.. more codes here that retrieves hotlink guids&lt;BR /&gt;for (UInt32 i = 0; i &amp;lt; hotlinks.GetSize(); ++i)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;  //get the hotlink node&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;  API_HotlinkNode hotlinkNode = Hotlink::GetNode(hotlinks[i]);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;  GS::UniString nameUStr = hotlinkNode_1.name;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;  if (!FilterHotlinkName(nameUStr))&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;    continue; &lt;FONT color="#FF0000"&gt;&amp;lt;== crashes here&lt;/FONT&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;  // .. more codes here&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;SPAN&gt;FilterHotlinkName() checks the name if it follows a certain format and if it is valid value.&amp;nbsp;&lt;/SPAN&gt;Hotlink::GetNode() handles correct ArchiCAD version calls:&lt;/P&gt;
&lt;PRE&gt;API_HotlinkNode Hotlink::GetNode(API_Guid i_guid)&lt;BR /&gt;{&lt;BR /&gt;  API_HotlinkNode hotlinkNode = {};&lt;BR /&gt;  hotlinkNode.guid = i_guid;&lt;BR /&gt;#if ARCHICAD_VER &amp;gt;= 27&lt;BR /&gt;  LastGSErr = ACAPI_Hotlink_GetHotlinkNode(&amp;amp;hotlinkNode);&lt;BR /&gt;#else&lt;BR /&gt;  LastGSErr = ACAPI_Database(APIDb_GetHotlinkNodeID, &amp;amp;hotlinkNode);&lt;BR /&gt;#endif&lt;BR /&gt;  return hotlinkNode;&lt;BR /&gt;}&lt;/PRE&gt;
&lt;P&gt;Specifically, the crash happens here (APIdefs_Database.h):&lt;/P&gt;
&lt;PRE&gt;~API_HotlinkNode ()&lt;BR /&gt;{ &lt;FONT color="#FF0000"&gt;vvvvvvvvvvvvvvvvvvvvv==== crashes here&lt;/FONT&gt;&lt;BR /&gt;  delete sourceLocation; sourceLocation = nullptr;&lt;BR /&gt;  delete serverSourceLocation; serverSourceLocation = nullptr;&lt;BR /&gt;  BMKillPtr (&amp;amp;userData.data);&lt;BR /&gt;}&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 16 Apr 2025 06:42:18 GMT</pubDate>
    <dc:creator>ReignBough</dc:creator>
    <dc:date>2025-04-16T06:42:18Z</dc:date>
    <item>
      <title>Crashing at ~API_HotlinkNode()</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/Crashing-at-API-HotlinkNode/m-p/659584#M10274</link>
      <description>&lt;P&gt;Getting this message on the crash breakpoint:&lt;/P&gt;
&lt;P&gt;Critical error detected c0000374&lt;BR /&gt;A breakpoint instruction (__debugbreak() statement or a similar call) was executed in Archicad.exe.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This happened here:&lt;/P&gt;
&lt;PRE&gt;&lt;SPAN&gt;GS::Array&amp;lt;API_Guid&amp;gt;&amp;amp; hotlinks;&lt;BR /&gt;//.. more codes here that retrieves hotlink guids&lt;BR /&gt;for (UInt32 i = 0; i &amp;lt; hotlinks.GetSize(); ++i)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;  //get the hotlink node&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;  API_HotlinkNode hotlinkNode = Hotlink::GetNode(hotlinks[i]);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;  GS::UniString nameUStr = hotlinkNode_1.name;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;  if (!FilterHotlinkName(nameUStr))&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;    continue; &lt;FONT color="#FF0000"&gt;&amp;lt;== crashes here&lt;/FONT&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;  // .. more codes here&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;SPAN&gt;FilterHotlinkName() checks the name if it follows a certain format and if it is valid value.&amp;nbsp;&lt;/SPAN&gt;Hotlink::GetNode() handles correct ArchiCAD version calls:&lt;/P&gt;
&lt;PRE&gt;API_HotlinkNode Hotlink::GetNode(API_Guid i_guid)&lt;BR /&gt;{&lt;BR /&gt;  API_HotlinkNode hotlinkNode = {};&lt;BR /&gt;  hotlinkNode.guid = i_guid;&lt;BR /&gt;#if ARCHICAD_VER &amp;gt;= 27&lt;BR /&gt;  LastGSErr = ACAPI_Hotlink_GetHotlinkNode(&amp;amp;hotlinkNode);&lt;BR /&gt;#else&lt;BR /&gt;  LastGSErr = ACAPI_Database(APIDb_GetHotlinkNodeID, &amp;amp;hotlinkNode);&lt;BR /&gt;#endif&lt;BR /&gt;  return hotlinkNode;&lt;BR /&gt;}&lt;/PRE&gt;
&lt;P&gt;Specifically, the crash happens here (APIdefs_Database.h):&lt;/P&gt;
&lt;PRE&gt;~API_HotlinkNode ()&lt;BR /&gt;{ &lt;FONT color="#FF0000"&gt;vvvvvvvvvvvvvvvvvvvvv==== crashes here&lt;/FONT&gt;&lt;BR /&gt;  delete sourceLocation; sourceLocation = nullptr;&lt;BR /&gt;  delete serverSourceLocation; serverSourceLocation = nullptr;&lt;BR /&gt;  BMKillPtr (&amp;amp;userData.data);&lt;BR /&gt;}&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 16 Apr 2025 06:42:18 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/Crashing-at-API-HotlinkNode/m-p/659584#M10274</guid>
      <dc:creator>ReignBough</dc:creator>
      <dc:date>2025-04-16T06:42:18Z</dc:date>
    </item>
    <item>
      <title>Re: Crashing at ~API_HotlinkNode()</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/Crashing-at-API-HotlinkNode/m-p/659640#M10275</link>
      <description>&lt;P&gt;I guess about reason.&lt;BR /&gt;&lt;BR /&gt;Actually, you can not copy and assign the API_HotlinkNode structure.&amp;nbsp;&lt;BR /&gt;Formally this structure have to declare empty copy constructor snd assignmen operator to protect it, as it has such destructor.&lt;BR /&gt;So you can not to return&amp;nbsp;API_HotlinkNode from the GetNode function by value.&lt;BR /&gt;&lt;BR /&gt;For example, you may to implement the GetNode function like this: bool GetNode( const API_Guid&amp;amp; guid,&amp;nbsp;API_HotlinkNode* node ).&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 16 Apr 2025 09:41:14 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/Crashing-at-API-HotlinkNode/m-p/659640#M10275</guid>
      <dc:creator>Oleg</dc:creator>
      <dc:date>2025-04-16T09:41:14Z</dc:date>
    </item>
  </channel>
</rss>

