<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Game failure at return 0; at the end of the main loop</title>
		<link>http://www.allegro.cc/forums/view/567657</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sat, 18 Feb 2006 23:03:23 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>My game is pointer erroring at the return 0; at the end of the main loop.<br />The code i just added destroys some BITMAPs (as far as I can tell they are not used after this).</p><p>But why would it pointer error there?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Miles Lombardi)</author>
		<pubDate>Sat, 18 Feb 2006 03:26:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
Because you&#39;re a bad, bad person and are not showing us any damn code.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (X-G)</author>
		<pubDate>Sat, 18 Feb 2006 03:31:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well i wouldn&#39;t have a clue waht to show you:</p><p>main:</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
  init<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>

  <span class="k1">while</span> <span class="k2">(</span>run<span class="k2">)</span> loop<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>

  deinit<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>

That&#39;s a bit useless.</p><p>You see the problem occurs at return 0; So where am i supposed to show you?</p><p>loop:
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">void</span> loop<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
     <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span> game_exit<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
     <span class="k1">if</span> <span class="k2">(</span>room <span class="k3">=</span><span class="k3">=</span> cRoom-&gt;id<span class="k2">)</span><span class="k2">{</span>
        cRoom-&gt;constructor<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
        <span class="k1">while</span> <span class="k2">(</span>room <span class="k3">=</span><span class="k3">=</span> cRoom-&gt;id<span class="k2">)</span><span class="k2">{</span>allrooms<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> cRoom-&gt;exec<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="k2">}</span>
        cRoom-&gt;destructor<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
     <span class="k2">}</span>
     <span class="k1">else</span> cRoom <span class="k3">=</span> rooms<span class="k2">[</span>room <span class="k3">-</span> <span class="n">1</span><span class="k2">]</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>

The current constructor exec and destructor:
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">void</span> rm_title_Start<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">2</td><td>     <a href="http://www.allegro.cc/manual/install_int" target="_blank"><span class="a">install_int</span></a> <span class="k2">(</span>rm_title_callback, <span class="n">750</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">3</td><td>     title_press_start <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span><span class="s">"graphics/title/press_start.png"</span>, NULL<span class="k2">)</span><span class="k2">;</span>    </td></tr><tr><td class="number">4</td><td>     title_background <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span><span class="s">"graphics/title/title.png"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">5</td><td><span class="k2">}</span></td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td>&#160;</td></tr><tr><td class="number">8</td><td>&#160;</td></tr><tr><td class="number">9</td><td><span class="k1">void</span> rm_title_Loop<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">10</td><td>&#160;</td></tr><tr><td class="number">11</td><td>   <span class="k1">if</span> <span class="k2">(</span>draw_bg<span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">12</td><td>      draw_bg <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>      <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>sbuffer, title_background, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>   <span class="k2">}</span>  </td></tr><tr><td class="number">15</td><td>   <span class="k1">if</span> <span class="k2">(</span>draw_start<span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">16</td><td>      draw_start <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>      <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>sbuffer, title_press_start, <span class="n">120</span><span class="k3">-</span>title_press_start-&gt;w<span class="k3">/</span><span class="n">2</span>,<span class="n">125</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>   <span class="k2">}</span></td></tr><tr><td class="number">19</td><td>   <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">30</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td><span class="k2">}</span></td></tr><tr><td class="number">21</td><td>&#160;</td></tr><tr><td class="number">22</td><td>&#160;</td></tr><tr><td class="number">23</td><td><span class="k1">void</span> rm_title_End<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">24</td><td>     <a href="http://www.allegro.cc/manual/remove_int" target="_blank"><span class="a">remove_int</span></a><span class="k2">(</span>rm_title_callback<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td>     <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a> <span class="k2">(</span>title_press_start<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">26</td><td>     <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a> <span class="k2">(</span>title_background<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">27</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

It was those destroy_bitmaps() that I added as I realised I&#39;d forgotten to do that.<br />I also moved the load_bitmap s from the load_bitmaps() function into there, so it&#39;s easier to see what I&#39;m working with.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Miles Lombardi)</author>
		<pubDate>Sat, 18 Feb 2006 03:35:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Make sure that you&#39;re not destroying any bitmaps in global objects destructors.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Hrvoje Ban)</author>
		<pubDate>Sat, 18 Feb 2006 03:39:13 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Are you destroying all the bitmaps, like sbuffer?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Sat, 18 Feb 2006 03:44:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Are you setting free&#39;ed pointers to NULL?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Evert)</author>
		<pubDate>Sat, 18 Feb 2006 04:25:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It&#39;s this:<br />Make sure that you&#39;re not destroying any bitmaps in global objects destructors.<br />I haven&#39;t checked it yet, but I just realised that the destructor function is run twice. The second time in the return 0; This is because it&#39;s run inside a class destructor.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Miles Lombardi)</author>
		<pubDate>Sat, 18 Feb 2006 23:03:23 +0000</pubDate>
	</item>
</rss>
