<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>test_driver: renamed image refuses to load</title>
		<link>http://www.allegro.cc/forums/view/609658</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Wed, 29 Feb 2012 22:26:56 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Because my installation lacks jpeg, I edited some ini files for test_driver. Namely: test_image (removed jpeg sections), and test_prim (changed file name for obp). For the latter of course I also saved a copy of the file in an another format. Still it failed (gracefully) to load the third bitmap. I have tried bmp (24 or 32 bit), and png with some random settings (desperately tried turning down compression). I don&#39;t see why the image won&#39;t load.<br />I ran it through gdb, and it justs fails to fopen the third file. (Notice the previous two images were loaded without problem.)<br />So here&#39;s the first few lines of the ini (only first 3 are of importance):
</p><div class="source-code snippet"><div class="inner"><pre><span class="k2">[</span>bitmaps<span class="k2">]</span>
bkg<span class="k3">=</span>..<span class="k3">/</span>examples<span class="k3">/</span>data<span class="k3">/</span>bkg.png
texture<span class="k3">=</span>..<span class="k3">/</span>examples<span class="k3">/</span>data<span class="k3">/</span>texture.tga
obp<span class="k3">=</span>..<span class="k3">/</span>examples<span class="k3">/</span>data<span class="k3">/</span>obp.bmp

<span class="k2">[</span>ll<span class="k2">]</span>
op0<span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>bkg, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span>
op1<span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_build_transform"><span class="a">al_build_transform</span></a><span class="k2">(</span>trans, <span class="n">320</span>, <span class="n">240</span>, <span class="n">1</span>, <span class="n">1</span>, <span class="n">1</span>.<span class="n">0</span><span class="k2">)</span>
op2<span class="k3">=</span>
op3<span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_set_blender"><span class="a">al_set_blender</span></a><span class="k2">(</span>ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_ONE<span class="k2">)</span>
op4<span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_use_transform"><span class="a">al_use_transform</span></a><span class="k2">(</span>trans<span class="k2">)</span>
<span class="k2">[</span>...<span class="k2">]</span>
</pre></div></div><p>
(I asserted the line ending and non-printing characters)<br />Here&#39;s my first attempt at debugging it:
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="k2">(</span>gdb<span class="k2">)</span> list
<span class="number">  2</span><span class="n">20</span>
<span class="number">  3</span><span class="n">21</span>         <a href="http://www.allegro.cc/manual/ASSERT"><span class="a">ASSERT</span></a><span class="k2">(</span>drv<span class="k2">)</span><span class="k2">;</span>
<span class="number">  4</span><span class="n">22</span>         <a href="http://www.allegro.cc/manual/ASSERT"><span class="a">ASSERT</span></a><span class="k2">(</span>path<span class="k2">)</span><span class="k2">;</span>
<span class="number">  5</span><span class="n">23</span>         <a href="http://www.allegro.cc/manual/ASSERT"><span class="a">ASSERT</span></a><span class="k2">(</span>mode<span class="k2">)</span><span class="k2">;</span>
<span class="number">  6</span><span class="n">24</span>
<span class="number">  7</span><span class="n">25</span>         <span class="k1">if</span> <span class="k2">(</span>drv-&gt;fi_fopen<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  8</span><span class="n">26</span>            f <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_malloc"><span class="a">al_malloc</span></a><span class="k2">(</span><span class="k1">sizeof</span><span class="k2">(</span><span class="k3">*</span>f<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span><span class="n">27</span>            <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>f<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 10</span><span class="n">28</span>               <a href="http://www.allegro.cc/manual/al_set_errno"><span class="a">al_set_errno</span></a><span class="k2">(</span>ENOMEM<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 11</span><span class="n">29</span>            <span class="k2">}</span>
<span class="number"> 12</span><span class="k2">(</span>gdb<span class="k2">)</span> step
<span class="number"> 13</span><span class="n">26</span>            f <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_malloc"><span class="a">al_malloc</span></a><span class="k2">(</span><span class="k1">sizeof</span><span class="k2">(</span><span class="k3">*</span>f<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span><span class="k2">(</span>gdb<span class="k2">)</span>
<span class="number"> 15</span><a href="http://www.allegro.cc/manual/al_malloc_with_context"><span class="a">al_malloc_with_context</span></a> <span class="k2">(</span>n<span class="k3">=</span><span class="n">28</span>, <a href="http://www.allegro.cc/manual/line"><span class="a">line</span></a><span class="k3">=</span><span class="n">26</span>,
<span class="number"> 16</span>    file<span class="k3">=</span><span class="n">0x6942d1c8</span> <span class="s">"D:\\SDevX\\A5\\src\\file.c"</span>,
<span class="number"> 17</span>    func<span class="k3">=</span><span class="n">0x6942d28e</span> <span class="s">"al_fopen_interface"</span><span class="k2">)</span> at D:\SDevX\A5\src\memory.c:41
<span class="number"> 18</span><span class="n">41</span>         <span class="k1">if</span> <span class="k2">(</span>mem<span class="k2">)</span>
<span class="number"> 19</span><span class="k2">(</span>gdb<span class="k2">)</span>
<span class="number"> 20</span><span class="n">44</span>            <span class="k1">return</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_551.html" target="_blank">malloc</a><span class="k2">(</span>n<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span><span class="k2">(</span>gdb<span class="k2">)</span>
<span class="number"> 22</span><span class="n">45</span>      <span class="k2">}</span>
<span class="number"> 23</span><span class="k2">(</span>gdb<span class="k2">)</span>
<span class="number"> 24</span><a href="http://www.allegro.cc/manual/al_fopen_interface"><span class="a">al_fopen_interface</span></a> <span class="k2">(</span>drv<span class="k3">=</span><span class="n">0x6942d340</span>,
<span class="number"> 25</span>    path<span class="k3">=</span><span class="n">0x1dd6fb8</span> <span class="s">"../examples/data/obp.bmp"</span>, mode<span class="k3">=</span><span class="n">0x6316e117</span> <span class="s">"rb"</span><span class="k2">)</span>
<span class="number"> 26</span>    at D:\SDevX\A5\src\file.c:27
<span class="number"> 27</span><span class="n">27</span>            <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>f<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 28</span><span class="k2">(</span>gdb<span class="k2">)</span>
<span class="number"> 29</span><span class="n">31</span>               f-&gt;vtable <span class="k3">=</span> drv<span class="k2">;</span>
<span class="number"> 30</span><span class="k2">(</span>gdb<span class="k2">)</span>
<span class="number"> 31</span><span class="n">32</span>               f-&gt;userdata <span class="k3">=</span> drv-&gt;fi_fopen<span class="k2">(</span>path, mode<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 32</span><span class="k2">(</span>gdb<span class="k2">)</span>
<span class="number"> 33</span>file_stdio_fopen <span class="k2">(</span>path<span class="k3">=</span><span class="n">0x1dd6fb8</span> <span class="s">"../examples/data/obp.bmp"</span>,
<span class="number"> 34</span>    mode<span class="k3">=</span><span class="n">0x6316e117</span> <span class="s">"rb"</span><span class="k2">)</span> at D:\SDevX\A5\src\file_stdio.c:82
<span class="number"> 35</span><span class="n">82</span>         fp <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_337.html" target="_blank">fopen</a><span class="k2">(</span>path, mode<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 36</span><span class="k2">(</span>gdb<span class="k2">)</span> print path
<span class="number"> 37</span>$<span class="n">4</span> <span class="k3">=</span> <span class="n">0x1dd6fb8</span> <span class="s">"../examples/data/obp.bmp"</span>
<span class="number"> 38</span><span class="k2">(</span>gdb<span class="k2">)</span> print mode
<span class="number"> 39</span>$<span class="n">5</span> <span class="k3">=</span> <span class="n">0x6316e117</span> <span class="s">"rb"</span>
<span class="number"> 40</span><span class="k2">(</span>gdb<span class="k2">)</span> step
<span class="number"> 41</span><span class="n">83</span>         <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>fp<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 42</span><span class="k2">(</span>gdb<span class="k2">)</span>
<span class="number"> 43</span><span class="n">84</span>            <a href="http://www.allegro.cc/manual/al_set_errno"><span class="a">al_set_errno</span></a><span class="k2">(</span>ENOMEM<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 44</span><span class="k2">(</span>gdb<span class="k2">)</span> list
<span class="number"> 45</span><span class="n">79</span>      <span class="k2">{</span>
<span class="number"> 46</span><span class="n">80</span>         FILE <span class="k3">*</span>fp<span class="k2">;</span>
<span class="number"> 47</span><span class="n">81</span>
<span class="number"> 48</span><span class="n">82</span>         fp <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_337.html" target="_blank">fopen</a><span class="k2">(</span>path, mode<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 49</span><span class="n">83</span>         <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>fp<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 50</span><span class="n">84</span>            <a href="http://www.allegro.cc/manual/al_set_errno"><span class="a">al_set_errno</span></a><span class="k2">(</span>ENOMEM<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 51</span><span class="n">85</span>            <span class="k1">return</span> NULL<span class="k2">;</span>
<span class="number"> 52</span><span class="n">86</span>         <span class="k2">}</span>
<span class="number"> 53</span><span class="n">87</span>
<span class="number"> 54</span><span class="n">88</span>         <span class="k1">return</span> fp<span class="k2">;</span>
</div></div><p>
Allegro 5.1.2.0 debug. Build without SSE. MinGW 4.5. Windows 7. I&#39;ve tried a fresh restart.<br />The only thing I can think of is some illegal access to memory used by fopen. <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" /><br />Any more sensible ideas?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (weapon_S)</author>
		<pubDate>Wed, 29 Feb 2012 04:05:16 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>If you swap the order of files around, the third one always fails?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Wed, 29 Feb 2012 04:18:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Make sure the obp.bmp exists in the $BUILDDIR/examples/data, where $BUILDDIR is your build directory. It won&#39;t work to just have it in the source examples/data directory.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Peter Wang)</author>
		<pubDate>Wed, 29 Feb 2012 16:21:41 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>D&#39;OH! Now I feel stupid. I was confused because the ini files are only in the source directory.<br />Rule #1 of debugging: the least trustworthy needs the closest inspection.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (weapon_S)</author>
		<pubDate>Wed, 29 Feb 2012 22:26:56 +0000</pubDate>
	</item>
</rss>
