<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Problem destroying bitmaps objects a destructor</title>
		<link>http://www.allegro.cc/forums/view/610164</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sat, 05 May 2012 08:11:08 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hello, could anyone shed some light on why I have this problem destroying bitmaps &amp; text? When I place al_destroy_bitmap() or al_destroy_font() in a class destructor, my program crashes when I try to close it. I made a workaround where I created an &quot;unload()&quot; function before I actually destroy the object, but that seems a little excessive.</p><p>The objects are created using the following code
</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="k1">class</span> text <span class="k2">{</span>
<span class="number">  2</span>        private:
<span class="number">  3</span>                <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a><span class="k3">*</span> <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a><span class="k2">;</span>
<span class="number">  4</span>        public:
<span class="number">  5</span>                text<span class="k2">(</span><span class="k1">const</span> <span class="k1">char</span><span class="k3">*</span> fontFile, <span class="k1">int</span> size, flags<span class="k3">=</span><span class="n">0</span><span class="k2">)</span>     <span class="k2">{</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a> <span class="k3">=</span> al_create_font<span class="k2">(</span>fontFile, size, flags<span class="k2">)</span><span class="k2">;</span><span class="k2">}</span>
<span class="number">  6</span>                ~text<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>                                          <span class="k2">{</span><span class="c">//left blank or else the program will crash}</span>
<span class="number">  7</span><span class="k2">}</span>
<span class="number">  8</span>
<span class="number">  9</span><span class="k1">class</span> sprite<span class="k2">{</span>
<span class="number"> 10</span>        private:
<span class="number"> 11</span>                <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span> image<span class="k2">;</span>
<span class="number"> 12</span>        public:
<span class="number"> 13</span>                sprite<span class="k2">(</span><span class="k1">const</span> <span class="k1">char</span><span class="k3">*</span> bitmapFile<span class="k2">)</span>                    <span class="k2">{</span>image <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_bitmap"><span class="a">al_load_bitmap</span></a><span class="k2">(</span>bitmapFile<span class="k2">)</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 14</span>                ~sprite<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>                                        <span class="k2">{</span><span class="c">//left blank or else the program will crash}</span>
<span class="number"> 15</span><span class="k2">}</span>
</div></div><p>

These destructors cause the program to crash unless they&#39;re left blank
</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>text::~text<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 2</span>  <a href="http://www.allegro.cc/manual/al_destroy_font"><span class="a">al_destroy_font</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 3</span><span class="k2">}</span>
<span class="number"> 4</span>
<span class="number"> 5</span>sprite::~sprite<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 6</span>  <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>image<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 7</span><span class="k2">}</span>
</div></div><p>

And these are the unload functions that I have to call before destroying the object
</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>text::unload<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 2</span>        <a href="http://www.allegro.cc/manual/al_destroy_font"><span class="a">al_destroy_font</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 3</span><span class="k2">}</span>
<span class="number"> 4</span>
<span class="number"> 5</span>sprite::unload<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 6</span>        <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>image<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 7</span><span class="k2">}</span>
</div></div><p>

What also seems weird is that I cannot place the unload functions in the destructors either. Can anyone help me out?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (chex_5)</author>
		<pubDate>Sat, 05 May 2012 02:36:14 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Uhm, no. Both of those do exactly the same things.</p><p>Potential cause 1 : You are making copies of your text or sprite objects. This only performs a shallow copy of the pointer holding the resource, and when they go out of scope they get destroyed. Then when the original goes out of scope, it tries to destroy the same resource a second time, which would crash.</p><p>Potential cause 2 : You haven&#39;t properly initialized the necessary addons, for the fonts or for the images, which means your load calls will return null, and then when they go out of scope they try to destroy a null pointer, which will crash.</p><p>Potential cause 3 : They just aren&#39;t loading properly, but you don&#39;t check so you wouldn&#39;t know.</p><p>So, first make sure your resources are loading properly, either through text output, or through exceptions, or whatever else makes you happy.</p><p>Second, make sure the addons are initialized.</p><p>Third, make sure you don&#39;t make copies by value of your text and sprite objects, or write a proper copy constructor.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sat, 05 May 2012 02:46:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The code I posted was just pseudocode. I have all of the addons initialized, the fonts and bitmaps using each class load properly, but where I run into problems is when I place &quot;al_destroy_font()&quot; or &quot;al_destroy_bitmap()&quot; in the destructor. I also run into problems if I place the unload functions in the corresponding class destructor as well.<br />Otherwise, the code runs fine when each unload/al_destroy function is called independent of the destructor, but crashes if placed inside of it. I&#39;ll go ahead and post the actual code that I have:</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="p">#ifndef TEXT_H</span>
<span class="number">  2</span><span class="p">#define  TEXT_H</span>
<span class="number">  3</span>
<span class="number">  4</span><span class="k1">class</span> text <span class="k2">{</span>
<span class="number">  5</span>private:
<span class="number">  6</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a><span class="k3">*</span> <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a><span class="k2">;</span>
<span class="number">  7</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_COLOR"><span class="a">ALLEGRO_COLOR</span></a> color<span class="k2">;</span>
<span class="number">  8</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_USTR_INFO"><span class="a">ALLEGRO_USTR_INFO</span></a> textInfo<span class="k2">;</span>
<span class="number">  9</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_USTR"><span class="a">ALLEGRO_USTR</span></a><span class="k3">*</span> ustring<span class="k2">;</span>
<span class="number"> 10</span>  <span class="k1">int</span> size<span class="k2">;</span>
<span class="number"> 11</span>  <span class="k1">float</span> x<span class="k2">;</span>
<span class="number"> 12</span>  <span class="k1">float</span> y<span class="k2">;</span>
<span class="number"> 13</span>  
<span class="number"> 14</span>public:
<span class="number"> 15</span>  text<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 16</span>  ~text<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span>  
<span class="number"> 18</span>  <span class="k1">void</span>  loadFont    <span class="k2">(</span><span class="k1">const</span> <span class="k1">char</span><span class="k3">*</span> file, <span class="k1">int</span> fontSize, <span class="k1">int</span> allegroFlags <span class="k3">=</span> <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span>  <span class="k1">void</span>  unloadFont    <span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>              <span class="c">//MUST be called before the destructor!</span>
<span class="number"> 20</span>  <span class="k1">float</span>  getPosX      <span class="k2">(</span><span class="k2">)</span> <span class="k1">const</span>          <span class="k2">{</span><span class="k1">return</span> x<span class="k2">;</span><span class="k2">}</span>
<span class="number"> 21</span>  <span class="k1">float</span>  getPosY      <span class="k2">(</span><span class="k2">)</span> <span class="k1">const</span>          <span class="k2">{</span><span class="k1">return</span> y<span class="k2">;</span><span class="k2">}</span>
<span class="number"> 22</span>  <span class="k1">int</span>    getSize      <span class="k2">(</span><span class="k2">)</span> <span class="k1">const</span>          <span class="k2">{</span><span class="k1">return</span> size<span class="k2">;</span><span class="k2">}</span>
<span class="number"> 23</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_COLOR"><span class="a">ALLEGRO_COLOR</span></a> getColor  <span class="k2">(</span><span class="k2">)</span> <span class="k1">const</span>          <span class="k2">{</span><span class="k1">return</span> color<span class="k2">;</span><span class="k2">}</span>
<span class="number"> 24</span>  <span class="k1">void</span>  setPos      <span class="k2">(</span><span class="k1">float</span> xPos, <span class="k1">float</span> yPos<span class="k2">)</span>  <span class="k2">{</span>x <span class="k3">=</span> xPos<span class="k2">;</span> y <span class="k3">=</span> yPos<span class="k2">;</span><span class="k2">}</span>
<span class="number"> 25</span>  <span class="k1">void</span>  setText      <span class="k2">(</span><span class="k1">const</span> <span class="k1">char</span><span class="k3">*</span> textData<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 26</span>  <span class="k1">void</span>  setColor    <span class="k2">(</span><span class="k1">float</span> r, <span class="k1">float</span> g, <span class="k1">float</span> b, <span class="k1">float</span> a<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 27</span>  <span class="k1">void</span>  draw      <span class="k2">(</span><span class="k1">int</span> allegroFlags <span class="k3">=</span> <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 28</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 29</span>
<span class="number"> 30</span><span class="k1">inline</span> <span class="k1">void</span> text::draw<span class="k2">(</span><span class="k1">int</span> allegroFlags<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 31</span>  <a href="http://www.allegro.cc/manual/al_draw_ustr"><span class="a">al_draw_ustr</span></a><span class="k2">(</span>  <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, color, x, y, allegroFlags, ustring<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 32</span><span class="k2">}</span>
<span class="number"> 33</span>
<span class="number"> 34</span><span class="k1">inline</span> <span class="k1">void</span> text::setText<span class="k2">(</span><span class="k1">const</span> <span class="k1">char</span><span class="k3">*</span> textData<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 35</span>  <a href="http://www.allegro.cc/manual/al_ustr_free"><span class="a">al_ustr_free</span></a><span class="k2">(</span>ustring<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 36</span>  ustring <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_ref_cstr"><span class="a">al_ref_cstr</span></a><span class="k2">(</span><span class="k3">&amp;</span>textInfo, textData<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 37</span><span class="k2">}</span>
<span class="number"> 38</span>
<span class="number"> 39</span><span class="p">#endif  /* TEXT_H */</span>
</div></div><p>
</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="p">#include "text.h"</span>
<span class="number">  2</span><span class="c">//addons have already been initialized in another file</span>
<span class="number">  3</span>
<span class="number">  4</span>text::text<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  5</span>  <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a> <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  6</span>  ustring <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  7</span>  size <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  8</span>  x <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  9</span>  y <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 10</span>  color.r <span class="k3">=</span> <span class="n">0</span>.<span class="n">0f</span><span class="k2">;</span>
<span class="number"> 11</span>  color.g <span class="k3">=</span> <span class="n">0</span>.<span class="n">0f</span><span class="k2">;</span>
<span class="number"> 12</span>  color.b <span class="k3">=</span> <span class="n">0</span>.<span class="n">0f</span><span class="k2">;</span>
<span class="number"> 13</span>  color.a <span class="k3">=</span> <span class="n">0</span>.<span class="n">0f</span><span class="k2">;</span>
<span class="number"> 14</span><span class="k2">}</span>
<span class="number"> 15</span>
<span class="number"> 16</span>text::~text<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 17</span>  <span class="c">//al_destroy_font(font);</span>
<span class="number"> 18</span>  <a href="http://www.allegro.cc/manual/al_ustr_free"><span class="a">al_ustr_free</span></a><span class="k2">(</span>ustring<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span><span class="k2">}</span>
<span class="number"> 20</span>
<span class="number"> 21</span><span class="k1">void</span> text::loadFont<span class="k2">(</span><span class="k1">const</span> <span class="k1">char</span><span class="k3">*</span> file, <span class="k1">int</span> fontSize, <span class="k1">int</span> allegroFlags<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 22</span>  unloadFont<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 23</span>  size <span class="k3">=</span> fontSize<span class="k2">;</span>
<span class="number"> 24</span>  
<span class="number"> 25</span>  <span class="c">//search for true-type fonts by looking at the last two characters of the file extension</span>
<span class="number"> 26</span>  std::string fileParser <span class="k3">=</span> file<span class="k2">;</span>
<span class="number"> 27</span>  <span class="k1">unsigned</span> <span class="k1">int</span> sizeCounter <span class="k3">=</span> fileParser.size<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 28</span>  <span class="c">//there should be support for *.ttf &amp; *.otf-style fonts</span>
<span class="number"> 29</span>  <span class="k1">if</span> <span class="k2">(</span>  <span class="k2">(</span>fileParser<span class="k2">[</span>sizeCounter <span class="k3">-</span> <span class="n">1</span><span class="k2">]</span> <span class="k3">=</span><span class="k3">=</span> <span class="s">'f'</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> fileParser<span class="k2">[</span>sizeCounter <span class="k3">-</span> <span class="n">2</span><span class="k2">]</span> <span class="k3">=</span><span class="k3">=</span> <span class="s">'t'</span><span class="k2">)</span>
<span class="number"> 30</span>      <span class="k3">|</span><span class="k3">|</span> <span class="k2">(</span>fileParser<span class="k2">[</span>sizeCounter <span class="k3">-</span> <span class="n">1</span><span class="k2">]</span> <span class="k3">=</span><span class="k3">=</span> <span class="s">'F'</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> fileParser<span class="k2">[</span>sizeCounter <span class="k3">-</span> <span class="n">2</span><span class="k2">]</span> <span class="k3">=</span><span class="k3">=</span> <span class="s">'T'</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 31</span>    fileParser <span class="k3">=</span> <span class="s">"TTF"</span><span class="k2">;</span>
<span class="number"> 32</span>    <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a> <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_ttf_font"><span class="a">al_load_ttf_font</span></a><span class="k2">(</span>file, size, allegroFlags<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 33</span>  <span class="k2">}</span>
<span class="number"> 34</span>  <span class="k1">else</span> <span class="k2">{</span>
<span class="number"> 35</span>    fileParser <span class="k3">=</span> <span class="s">"Bitmap"</span><span class="k2">;</span>
<span class="number"> 36</span>    <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a> <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_font"><span class="a">al_load_font</span></a><span class="k2">(</span>file, size, allegroFlags<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 37</span>  <span class="k2">}</span>
<span class="number"> 38</span>  
<span class="number"> 39</span>  <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a> <span class="k3">!</span><span class="k3">=</span> NULL<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 40</span>    LOG<span class="k2">(</span><span class="s">"Successfully loaded font:\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 41</span>    LOG<span class="k2">(</span><span class="s">"\tFile:\t%s\n"</span>, file<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 42</span>  <span class="k2">}</span>
<span class="number"> 43</span>  <span class="k1">else</span> <span class="k2">{</span>
<span class="number"> 44</span>    LOG<span class="k2">(</span><span class="s">"WARNING: Could not load font:\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 45</span>    LOG<span class="k2">(</span><span class="s">"\tFile:\t%s\n"</span>, file<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 46</span>  <span class="k2">}</span>
<span class="number"> 47</span>  
<span class="number"> 48</span>  LOG<span class="k2">(</span><span class="s">"\tType:\t%s\n"</span>, fileParser.c_str<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 49</span><span class="k2">}</span>
<span class="number"> 50</span>
<span class="number"> 51</span><span class="k1">void</span> text::setColor<span class="k2">(</span><span class="k1">float</span> r, <span class="k1">float</span> g, <span class="k1">float</span> b, <span class="k1">float</span> a<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 52</span>    color.r <span class="k3">=</span> r<span class="k2">;</span>
<span class="number"> 53</span>    color.g <span class="k3">=</span> g<span class="k2">;</span>
<span class="number"> 54</span>    color.b <span class="k3">=</span> b<span class="k2">;</span>
<span class="number"> 55</span>    color.a <span class="k3">=</span> a<span class="k2">;</span>
<span class="number"> 56</span><span class="k2">}</span>
<span class="number"> 57</span>
<span class="number"> 58</span><span class="k1">void</span> text::unloadFont<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 59</span>  <a href="http://www.allegro.cc/manual/al_destroy_font"><span class="a">al_destroy_font</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 60</span>  <a href="http://www.allegro.cc/manual/al_ustr_free"><span class="a">al_ustr_free</span></a><span class="k2">(</span>ustring<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 61</span>  size <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 62</span>  x <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 63</span>  y <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 64</span>  color.r <span class="k3">=</span> <span class="n">0</span>.<span class="n">0f</span><span class="k2">;</span>
<span class="number"> 65</span>  color.g <span class="k3">=</span> <span class="n">0</span>.<span class="n">0f</span><span class="k2">;</span>
<span class="number"> 66</span>  color.b <span class="k3">=</span> <span class="n">0</span>.<span class="n">0f</span><span class="k2">;</span>
<span class="number"> 67</span>  color.a <span class="k3">=</span> <span class="n">0</span>.<span class="n">0f</span><span class="k2">;</span>
<span class="number"> 68</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (chex_5)</author>
		<pubDate>Sat, 05 May 2012 03:35:20 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well, if they&#39;re loading properly, and your &#39;unload&#39; function works properly when you call it yourself, then you are probably destroying the same resource multiple times due to shallow copying.</p><p>Make your destructor log each destruction :
</p><div class="source-code snippet"><div class="inner"><pre>text::~text<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
  LOG<span class="k2">(</span><span class="s">"Destroying font %p..."</span> , <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a><span class="k2">)</span><span class="k2">;</span>
  <a href="http://www.allegro.cc/manual/al_destroy_font"><span class="a">al_destroy_font</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a><span class="k2">)</span><span class="k2">;</span>
  LOG<span class="k2">(</span><span class="s">"Destroying ustring %p..."</span> , ustring<span class="k2">)</span><span class="k2">;</span>
  <a href="http://www.allegro.cc/manual/al_ustr_free"><span class="a">al_ustr_free</span></a><span class="k2">(</span>ustring<span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>
See if the same address gets destroyed twice...</p><p>Or, just make a test copy constructor :
</p><div class="source-code snippet"><div class="inner"><pre>   text<span class="k2">(</span><span class="k1">const</span> text<span class="k3">&amp;</span> t<span class="k2">)</span> <span class="k2">{</span>LOG<span class="k2">(</span><span class="s">"text object shallow copied"</span><span class="k2">)</span><span class="k2">;</span><span class="k2">}</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sat, 05 May 2012 03:49:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks for the reply.<br />I tried adding a blank copy constructor and logged it, as well as the regular constructor and destructor, but it doesn&#39;t seem as though any extra copies are being created. I think I&#39;m going to download the allegro source code to see what might be causing this issue behind the scenes.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (chex_5)</author>
		<pubDate>Sat, 05 May 2012 06:07:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>This is not a problem with Allegro, I can tell you that right now. If you call al_destroy_font in one function, that is the same thing as calling it in another function.</p><p>Fire up a debugger first, and get a backtrace of the stack when it crashes. That will be WAY easier than trying to find a bug in Allegro that isn&#39;t there....
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sat, 05 May 2012 08:11:08 +0000</pubDate>
	</item>
</rss>
