<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Why won&#39;t this work?</title>
		<link>http://www.allegro.cc/forums/view/590921</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Tue, 10 Apr 2007 17:04:54 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hello everyone.</p><p>I&#39;m using a custom structure, DEST_BITMAP, to work with destructible 2D bitmaps.<br />This is the current code I&#39;m using:</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">typedef</span> <span class="k1">struct</span> </td></tr><tr><td class="number">2</td><td><span class="k2">{</span></td></tr><tr><td class="number">3</td><td>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>image<span class="k2">;</span></td></tr><tr><td class="number">4</td><td>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>dest_map<span class="k2">;</span></td></tr><tr><td class="number">5</td><td>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>curr_image<span class="k2">;</span></td></tr><tr><td class="number">6</td><td>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>curr_dest<span class="k2">;</span></td></tr><tr><td class="number">7</td><td>    <span class="k1">int</span> open_col, </td></tr><tr><td class="number">8</td><td>        dest_col<span class="k2">;</span></td></tr><tr><td class="number">9</td><td><span class="k2">}</span> DEST_BITMAP<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">void</span> load_dest_bitmap<span class="k2">(</span>DEST_BITMAP dest, <span class="k1">char</span> image_path<span class="k2">[</span><span class="k2">]</span>, <span class="k1">char</span> dest_map_path<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">12</td><td><span class="k2">{</span></td></tr><tr><td class="number">13</td><td>    dest.image <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>image_path, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>    dest.dest_map <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>dest_map_path, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td>    dest.curr_image <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span>dest.image-&gt;w, dest.image-&gt;h<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>    dest.curr_dest <span class="k3">=</span> dest.dest_map<span class="k2">;</span></td></tr><tr><td class="number">17</td><td>    dest.open_col <span class="k3">=</span> <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>, <span class="n">255</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>    dest.dest_col <span class="k3">=</span> <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td><span class="k2">}</span></td></tr><tr><td class="number">20</td><td>&#160;</td></tr><tr><td class="number">21</td><td>...</td></tr><tr><td class="number">22</td><td>&#160;</td></tr><tr><td class="number">23</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">24</td><td>  init<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td>&#160;</td></tr><tr><td class="number">26</td><td>  DEST_BITMAP dest<span class="k2">;</span></td></tr><tr><td class="number">27</td><td>  </td></tr><tr><td class="number">28</td><td>  <span class="k1">char</span> image_path<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span> <span class="s">"test-image.bmp"</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td>  <span class="k1">char</span> dest_map_path<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span> <span class="s">"test-dest_map.bmp"</span><span class="k2">;</span></td></tr><tr><td class="number">30</td><td>  </td></tr><tr><td class="number">31</td><td>  load_dest_bitmap<span class="k2">(</span>dest, image_path, dest_map_path<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">32</td><td>        ...</td></tr><tr><td class="number">33</td><td>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">34</td><td><span class="k2">}</span></td></tr><tr><td class="number">35</td><td><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span></td></tr></tbody></table></div></div><p>

But when I called load_dest_bitmap in my main function, it crashes my program. The funny thing is, when the <i>exact</i> same code is used straight in my main, the program runs fine. The program crashes every time I access the bitmap data, so there is something wrong with the loading - I just can&#39;t see it.</p><p>Any help would be appreciated,<br />Biubid_boy.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (biubid_boy)</author>
		<pubDate>Mon, 09 Apr 2007 12:47:55 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Code tags are in lowercase ([code][/code]), not uppercase ([CODE][/CODE]). Edit your post accordingly.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
The program crashes every time I access the bitmap data, so there is something wrong with the loading - I just can&#39;t see it.
</p></div></div><p>
You can&#39;t change the value of a function argument, unless you use a pointer.</p><p>Consider this:
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">int</span> xsquared<span class="k2">(</span><span class="k1">int</span> x<span class="k2">)</span>
<span class="k2">{</span>
 x <span class="k3">=</span> x<span class="k3">*</span>x<span class="k2">;</span>

 <span class="k1">return</span> x<span class="k2">;</span>
<span class="k2">}</span>

<span class="k1">int</span> main<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="k2">{</span>
 <span class="k1">int</span> n<span class="k2">;</span>
 n <span class="k3">=</span> <span class="n">2</span><span class="k2">;</span>
 <span class="c">//The value of n is now 2. </span>

 xsquared<span class="k2">(</span>n<span class="k2">)</span><span class="k2">;</span>
 <span class="c">//What's the value of n here?</span>
</pre></div></div><p>
The correct answer is &quot;still 2&quot;.</p><p>So you have to either have your load_dest_bitmap() <i>return</i> a DEST_BITMAP structure, or make the DEST_BITMAP argument a <a href="http://www.oreilly.com/catalog/pcp3/chapter/ch13.html">pointer</a>.</p><p>Oh, and check the return value of load_bitmap(), and make sure you destroy any loaded or created bitmaps.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (gnolam)</author>
		<pubDate>Mon, 09 Apr 2007 12:59:02 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Make sure that the bitmaps your programs are accessing exist in the spot you tell it to look. You could also perform error checking on load_bitmap() to see if it returns NULL(indicating that it couldn&#39;t find the bitmap).</p><p>As for changing the value passed to the load_dest_bitmap() function you could do as gnolam said or you could pass by reference by using the &#39;&amp;&#39; operator:
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">void</span> load_dest_bitmap<span class="k2">(</span>DEST_BITMAP<span class="k3">&amp;</span> dest, <span class="k1">char</span> image_path<span class="k2">[</span><span class="k2">]</span>,
<span class="k1">char</span> dest_map_path<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (someone972)</author>
		<pubDate>Tue, 10 Apr 2007 04:54:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
As for changing the value passed to the load_dest_bitmap() function you could do as gnolam said or you could pass by reference by using the &#39;&amp;&#39; operator:
</p></div></div><p>

No such thing exists in C. <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kibiz0r)</author>
		<pubDate>Tue, 10 Apr 2007 17:04:54 +0000</pubDate>
	</item>
</rss>
