<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Question about std::list and tidying up</title>
		<link>http://www.allegro.cc/forums/view/585511</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Thu, 25 May 2006 21:44:04 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I was using my own list class and decided to switch it to std::list. </p><p>Two classes use it.</p><p>UndoList: <br />std::list&lt;UndoData*&gt; stack;<br />ThemeList: <br />std::list&lt;ThemeInfo*&gt; stack;</p><p>For some reason I am getting a break at the tidying up of ThemeList.
</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Unhandled exception at 0x0041e062 in sudoku.exe: 0xC0000005: Access violation reading location 0x00000001.
</p></div></div><p>


sudoku.exe!std::list&lt;ThemeInfo *,std::allocator&lt;ThemeInfo *&gt; &gt;::clear()  Line 612 + 0xf	C++<br />sudoku.exe!std::list&lt;ThemeInfo *,std::allocator&lt;ThemeInfo *&gt; &gt;::_Tidy()  Line 931	C++<br />sudoku.exe!std::list&lt;ThemeInfo *,std::allocator&lt;ThemeInfo *&gt; &gt;::~list&lt;ThemeInfo *,std::allocator&lt;ThemeInfo *&gt; &gt;()  Line 366	C++<br />sudoku.exe!ThemeList::~ThemeList()  Line 30 + 0xf	C++</p><div class="source-code snippet"><div class="inner"><pre><span class="c">// in game.cpp</span>
ThemeList       themeList<span class="k2">;</span>
</pre></div></div><p>

</p><div class="source-code snippet"><div class="inner"><pre><span class="c">// in themelist.cpp</span>
ThemeList::ThemeList<span class="k2">(</span><span class="k2">)</span>
<span class="k2">{</span>
    this-&gt;screenShot <span class="k3">=</span> NULL<span class="k2">;</span>
    this-&gt;count <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
    this-&gt;place <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
    this-&gt;current <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
    this-&gt;over <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="k2">}</span>

ThemeList::~ThemeList<span class="k2">(</span><span class="k2">)</span>
<span class="k2">{</span>
<span class="k2">}</span> <span class="c">// line 30</span>
</pre></div></div><p>

This happens when even when I <b>don&#39;t</b> use themeList in the game. themeList only gets used when I am changing themes.</p><p>[EDIT]<br />I changed them to this and still get the same break.<br />std::list&lt;UndoData&gt; stack;<br />std::list&lt;ThemeInfo&gt; stack;</p><p>What could this be? Im using MSVC7.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (DanielH)</author>
		<pubDate>Sat, 20 May 2006 23:20:32 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You are deleteing a pointer that points to 0x00000001, which is invalid...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CGamesPlay)</author>
		<pubDate>Sun, 21 May 2006 01:34:53 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Set breakpoints at all your ctors and dtors.  Namely ThemeList.  See how many times the dtor is called and from where.  Does the dtor get called more often then the ctor?</p><p>Other then that advice, theres not much I can figure out about what you&#39;re doing.  Other then making some type of sudoku game.  Try pasting your ThemeList and making the simpliest test case possible that shows the problem you&#39;re having (and obviously paste that too).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Sun, 21 May 2006 07:47:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You need to use <i>std::list&lt;ThemeInfo*&gt; stack;</i>. Can you post the code of the constructor and destructor, as well as members of ThemeInfo?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Sun, 21 May 2006 08:42:08 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Okay, the first sentence in Rey&#39;s post isn&#39;t true. You can use lists of objects just fine.<br />[append]<br />To clarify, <tt>std::list&lt;ThemeInfo&gt; stack;</tt> is perfectly valid.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CGamesPlay)</author>
		<pubDate>Sun, 21 May 2006 11:13:28 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I placed breakpoints in ctor, dtor, and each member. ctor was getting called in the beginning of the program as ThemeList is a global. dtor was getting called at the end of the program. No members were getting called and I was still getting the same break.</p><p>I removed the breakpoints ant removed stack as a member of ThemeList and added it at the top of ThemeList&#39;s source. I am having a hard time trying to duplicate the same response. I am getting no break&#39;s.</p><p>Here is the header and source, the commented out parts are what it was.
</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="p">#ifndef _THEMELIST_H</span></td></tr><tr><td class="number">2</td><td><span class="p">#define _THEMELIST_H</span></td></tr><tr><td class="number">3</td><td>&#160;</td></tr><tr><td class="number">4</td><td><span class="k1">class</span> ThemeList</td></tr><tr><td class="number">5</td><td><span class="k2">{</span></td></tr><tr><td class="number">6</td><td>public:</td></tr><tr><td class="number">7</td><td>    ThemeList<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">8</td><td>    ~ThemeList<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">9</td><td>&#160;</td></tr><tr><td class="number">10</td><td>    <span class="k1">static</span> <span class="k1">int</span> addToList<span class="k2">(</span> <span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>filename, <span class="k1">int</span> attrib, <span class="k1">void</span> <span class="k3">*</span>param <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td>    <span class="k1">void</span> init<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">12</td><td>    <span class="k1">void</span> uninit<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>    <span class="k1">void</span> draw<span class="k2">(</span> <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>bitmap <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>    <span class="k1">void</span> logic<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td>    <span class="k1">void</span> moveUp<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>    <span class="k1">void</span> moveDown<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>    <span class="k1">void</span> apply<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>    <span class="k1">void</span> changeScreenShot<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>    <span class="k1">char</span> <span class="k3">*</span>getCurrentFilename<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>&#160;</td></tr><tr><td class="number">21</td><td>private:</td></tr><tr><td class="number">22</td><td>    <span class="c">//std::list&lt;ThemeInfo&gt; themeStack;  </span></td></tr><tr><td class="number">23</td><td>    RectInfo rectInfo<span class="k2">[</span> <span class="n">10</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/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>screenShot<span class="k2">;</span></td></tr><tr><td class="number">25</td><td>    <span class="k1">int</span> current<span class="k2">;</span></td></tr><tr><td class="number">26</td><td>    <span class="k1">int</span> over<span class="k2">;</span></td></tr><tr><td class="number">27</td><td>    <span class="k1">int</span> count<span class="k2">;</span></td></tr><tr><td class="number">28</td><td>    <span class="k1">int</span> place<span class="k2">;</span></td></tr><tr><td class="number">29</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">30</td><td>&#160;</td></tr><tr><td class="number">31</td><td><span class="k1">extern</span> ThemeList themeList<span class="k2">;</span></td></tr><tr><td class="number">32</td><td>&#160;</td></tr><tr><td class="number">33</td><td><span class="p">#endif</span></td></tr></tbody></table></div></div><p>

</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="p">#pragma warning( disable: 4312 )</span></td></tr><tr><td class="number">2</td><td>&#160;</td></tr><tr><td class="number">3</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">4</td><td><span class="p">#include &lt;time.h&gt;</span></td></tr><tr><td class="number">5</td><td><span class="p">#include &lt;stdio.h&gt;</span></td></tr><tr><td class="number">6</td><td><span class="p">#include &lt;string&gt;</span></td></tr><tr><td class="number">7</td><td><span class="p">#include &lt;list&gt;</span></td></tr><tr><td class="number">8</td><td><span class="p">#include "defines.h"</span></td></tr><tr><td class="number">9</td><td><span class="p">#include "globals.h"</span></td></tr><tr><td class="number">10</td><td><span class="p">#include "module.h"</span></td></tr><tr><td class="number">11</td><td><span class="p">#include "themefunctions.h"</span></td></tr><tr><td class="number">12</td><td><span class="p">#include "theme.h"</span></td></tr><tr><td class="number">13</td><td><span class="p">#include "themelist.h"</span></td></tr><tr><td class="number">14</td><td>&#160;</td></tr><tr><td class="number">15</td><td>std::list<span class="k3">&lt;</span>ThemeInfo&gt; themeStack<span class="k2">;</span></td></tr><tr><td class="number">16</td><td>&#160;</td></tr><tr><td class="number">17</td><td>ThemeList::ThemeList<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>    this-&gt;screenShot <span class="k3">=</span> NULL<span class="k2">;</span></td></tr><tr><td class="number">20</td><td>    this-&gt;count <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>    this-&gt;place <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>    this-&gt;current <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>    this-&gt;over <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td><span class="k2">}</span></td></tr><tr><td class="number">25</td><td>&#160;</td></tr><tr><td class="number">26</td><td>ThemeList::~ThemeList<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">27</td><td><span class="k2">{</span></td></tr><tr><td class="number">28</td><td><span class="k2">}</span></td></tr><tr><td class="number">29</td><td>&#160;</td></tr><tr><td class="number">30</td><td>&#160;</td></tr><tr><td class="number">31</td><td><span class="k1">int</span> ThemeList::addToList<span class="k2">(</span> <span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>filename, <span class="k1">int</span> attrib, <span class="k1">void</span> <span class="k3">*</span>param <span class="k2">)</span></td></tr><tr><td class="number">32</td><td><span class="k2">{</span></td></tr><tr><td class="number">33</td><td>    Theme temp<span class="k2">;</span></td></tr><tr><td class="number">34</td><td>    <span class="k1">char</span> <span class="k3">*</span>extension <span class="k3">=</span> NULL<span class="k2">;</span></td></tr><tr><td class="number">35</td><td>&#160;</td></tr><tr><td class="number">36</td><td>    <span class="c">//std::list&lt;ThemeInfo&gt; *themeStack = (std::list&lt;ThemeInfo&gt;*)param;</span></td></tr><tr><td class="number">37</td><td>&#160;</td></tr><tr><td class="number">38</td><td>    filename <span class="k3">=</span> <a href="http://www.allegro.cc/manual/get_filename" target="_blank"><span class="a">get_filename</span></a><span class="k2">(</span> filename <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td>    extension <span class="k3">=</span> <a href="http://www.allegro.cc/manual/get_extension" target="_blank"><span class="a">get_extension</span></a><span class="k2">(</span> filename <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">40</td><td>&#160;</td></tr><tr><td class="number">41</td><td>    <span class="k3">*</span><span class="k2">(</span> extension <span class="k3">-</span> <span class="n">1</span> <span class="k2">)</span> <span class="k3">=</span> <span class="s">'\0'</span><span class="k2">;</span></td></tr><tr><td class="number">42</td><td>&#160;</td></tr><tr><td class="number">43</td><td>    <span class="k1">if</span> <span class="k2">(</span> temp.load<span class="k2">(</span> filename <span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span> <span class="k2">)</span></td></tr><tr><td class="number">44</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">45</td><td>        ThemeInfo theme<span class="k2">;</span></td></tr><tr><td class="number">46</td><td>&#160;</td></tr><tr><td class="number">47</td><td>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_756.html" target="_blank">strcpy</a><span class="k2">(</span> theme.filename, filename <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">48</td><td>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_756.html" target="_blank">strcpy</a><span class="k2">(</span> theme.themeName, temp.getName<span class="k2">(</span><span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">49</td><td>&#160;</td></tr><tr><td class="number">50</td><td>        <span class="c">//themeStack-&gt;push_back( theme );</span></td></tr><tr><td class="number">51</td><td>        themeStack.push_back<span class="k2">(</span> theme <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">52</td><td>&#160;</td></tr><tr><td class="number">53</td><td>        temp.unload<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">54</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">55</td><td>&#160;</td></tr><tr><td class="number">56</td><td>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">57</td><td><span class="k2">}</span></td></tr><tr><td class="number">58</td><td>&#160;</td></tr><tr><td class="number">59</td><td><span class="k1">void</span> ThemeList::init<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">60</td><td><span class="k2">{</span></td></tr><tr><td class="number">61</td><td>    <span class="k1">char</span> fileExt<span class="k2">[</span> <span class="n">128</span> <span class="k2">]</span> <span class="k3">=</span> emptyString<span class="k2">;</span></td></tr><tr><td class="number">62</td><td>&#160;</td></tr><tr><td class="number">63</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_737.html" target="_blank">sprintf</a><span class="k2">(</span> fileExt, themeText, <span class="s">"*"</span>, dllExtension <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">64</td><td>&#160;</td></tr><tr><td class="number">65</td><td>    this-&gt;uninit<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">66</td><td>&#160;</td></tr><tr><td class="number">67</td><td>    <a href="http://www.allegro.cc/manual/for_each_file_ex" target="_blank"><span class="a">for_each_file_ex</span></a><span class="k2">(</span> fileExt, </td></tr><tr><td class="number">68</td><td>                      FA_ARCH, </td></tr><tr><td class="number">69</td><td>                      <span class="n">0</span>, </td></tr><tr><td class="number">70</td><td>                      ThemeList::addToList, </td></tr><tr><td class="number">71</td><td>                      NULL <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">72</td><td>                      <span class="c">//(void*)(&amp;this-&gt;stack) );</span></td></tr><tr><td class="number">73</td><td>&#160;</td></tr><tr><td class="number">74</td><td>    this-&gt;count <span class="k3">=</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span>themeStack.size<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">75</td><td>&#160;</td></tr><tr><td class="number">76</td><td>    <span class="k1">if</span> <span class="k2">(</span> this-&gt;count <span class="k3">&gt;</span> <span class="n">0</span> <span class="k2">)</span></td></tr><tr><td class="number">77</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">78</td><td>        this-&gt;over <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">79</td><td>        this-&gt;changeScreenShot<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>    </td></tr><tr><td class="number">80</td><td>        this-&gt;over <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">81</td><td>&#160;</td></tr><tr><td class="number">82</td><td>        <span class="k1">for</span> <span class="k2">(</span> <span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> <span class="n">10</span><span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span> <span class="k2">)</span></td></tr><tr><td class="number">83</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">84</td><td>            theme.getThemeRectInfo<span class="k2">(</span> this-&gt;rectInfo<span class="k2">[</span> i <span class="k2">]</span>, i <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">85</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">86</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">87</td><td><span class="k2">}</span></td></tr><tr><td class="number">88</td><td>&#160;</td></tr><tr><td class="number">89</td><td><span class="k1">void</span> ThemeList::uninit<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">90</td><td><span class="k2">{</span></td></tr><tr><td class="number">91</td><td>    <span class="k1">if</span> <span class="k2">(</span> this-&gt;screenShot <span class="k2">)</span></td></tr><tr><td class="number">92</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">93</td><td>        <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span> this-&gt;screenShot <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">94</td><td>        this-&gt;screenShot <span class="k3">=</span> NULL<span class="k2">;</span></td></tr><tr><td class="number">95</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">96</td><td>&#160;</td></tr><tr><td class="number">97</td><td>    <span class="k1">if</span> <span class="k2">(</span> themeStack.size<span class="k2">(</span><span class="k2">)</span> <span class="k3">&gt;</span> <span class="n">0</span> <span class="k2">)</span></td></tr><tr><td class="number">98</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">99</td><td>        themeStack.clear<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">100</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">101</td><td>&#160;</td></tr><tr><td class="number">102</td><td>    this-&gt;count <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">103</td><td>    this-&gt;place <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">104</td><td>    this-&gt;current <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">105</td><td>    this-&gt;over <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">106</td><td><span class="k2">}</span></td></tr><tr><td class="number">107</td><td>&#160;</td></tr><tr><td class="number">108</td><td><span class="k1">void</span> ThemeList::draw<span class="k2">(</span> <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>bitmap <span class="k2">)</span></td></tr><tr><td class="number">109</td><td><span class="k2">{</span></td></tr><tr><td class="number">110</td><td>    theme.drawThemeChoose<span class="k2">(</span> bitmap, this-&gt;screenShot <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">111</td><td>&#160;</td></tr><tr><td class="number">112</td><td>    <span class="k1">if</span> <span class="k2">(</span> themeStack.size<span class="k2">(</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span> <span class="k2">)</span></td></tr><tr><td class="number">113</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">114</td><td>        <span class="k1">return</span><span class="k2">;</span></td></tr><tr><td class="number">115</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">116</td><td>&#160;</td></tr><tr><td class="number">117</td><td>    std::list<span class="k3">&lt;</span>ThemeInfo&gt;::iterator it <span class="k3">=</span> themeStack.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">118</td><td>    <span class="k1">for</span> <span class="k2">(</span> <span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> this-&gt;place<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span> <span class="k2">)</span></td></tr><tr><td class="number">119</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">120</td><td>        it<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">121</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">122</td><td>&#160;</td></tr><tr><td class="number">123</td><td>    <span class="k1">for</span> <span class="k2">(</span> <span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> <span class="n">10</span><span class="k2">;</span> it<span class="k3">+</span><span class="k3">+</span>, i<span class="k3">+</span><span class="k3">+</span> <span class="k2">)</span></td></tr><tr><td class="number">124</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">125</td><td>        <span class="k1">if</span> <span class="k2">(</span> it <span class="k3">=</span><span class="k3">=</span> themeStack.end<span class="k2">(</span><span class="k2">)</span> <span class="k2">)</span></td></tr><tr><td class="number">126</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">127</td><td>            <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">128</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">129</td><td>&#160;</td></tr><tr><td class="number">130</td><td>        <span class="k1">int</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">=</span> i<span class="k2">;</span></td></tr><tr><td class="number">131</td><td>&#160;</td></tr><tr><td class="number">132</td><td>        <span class="k1">if</span> <span class="k2">(</span> this-&gt;over <span class="k3">=</span><span class="k3">=</span> <span class="k2">(</span> i <span class="k3">+</span> this-&gt;place <span class="k2">)</span> <span class="k2">)</span></td></tr><tr><td class="number">133</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">134</td><td>            <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">|</span><span class="k3">=</span> TF_OVER<span class="k2">;</span>   </td></tr><tr><td class="number">135</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">136</td><td>&#160;</td></tr><tr><td class="number">137</td><td>        <span class="k1">if</span> <span class="k2">(</span> this-&gt;current <span class="k3">=</span><span class="k3">=</span> <span class="k2">(</span> i <span class="k3">+</span> this-&gt;place <span class="k2">)</span> <span class="k2">)</span></td></tr><tr><td class="number">138</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">139</td><td>            <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">|</span><span class="k3">=</span> TF_CURRENT<span class="k2">;</span></td></tr><tr><td class="number">140</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">141</td><td>&#160;</td></tr><tr><td class="number">142</td><td>        <span class="k1">if</span> <span class="k2">(</span> <span class="k2">(</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">&amp;</span> TF_OVER <span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">&amp;</span> TF_CURRENT <span class="k2">)</span> <span class="k2">)</span></td></tr><tr><td class="number">143</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">144</td><td>            <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">|</span><span class="k3">=</span> TF_BOTH<span class="k2">;</span></td></tr><tr><td class="number">145</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">146</td><td>&#160;</td></tr><tr><td class="number">147</td><td>        theme.drawThemeInfo<span class="k2">(</span> bitmap, </td></tr><tr><td class="number">148</td><td>                             <span class="k2">(</span><span class="k3">*</span>it<span class="k2">)</span>, </td></tr><tr><td class="number">149</td><td>                             <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k2">)</span><span class="k2">;</span>     </td></tr><tr><td class="number">150</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">151</td><td><span class="k2">}</span></td></tr><tr><td class="number">152</td><td>&#160;</td></tr><tr><td class="number">153</td><td><span class="k1">void</span> ThemeList::logic<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">154</td><td><span class="k2">{</span></td></tr><tr><td class="number">155</td><td>    <span class="k1">if</span> <span class="k2">(</span> themeStack.size<span class="k2">(</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span> <span class="k2">)</span></td></tr><tr><td class="number">156</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">157</td><td>        <span class="k1">return</span><span class="k2">;</span></td></tr><tr><td class="number">158</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">159</td><td>&#160;</td></tr><tr><td class="number">160</td><td>    std::list<span class="k3">&lt;</span>ThemeInfo&gt;::iterator it <span class="k3">=</span> themeStack.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">161</td><td>    <span class="k1">for</span> <span class="k2">(</span> <span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> this-&gt;place<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span> <span class="k2">)</span></td></tr><tr><td class="number">162</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">163</td><td>        it<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">164</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">165</td><td>&#160;</td></tr><tr><td class="number">166</td><td>    this-&gt;over <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">167</td><td>&#160;</td></tr><tr><td class="number">168</td><td>    <span class="k1">for</span> <span class="k2">(</span> <span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> <span class="n">10</span><span class="k2">;</span> it<span class="k3">+</span><span class="k3">+</span>, i<span class="k3">+</span><span class="k3">+</span> <span class="k2">)</span></td></tr><tr><td class="number">169</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">170</td><td>        <span class="k1">if</span> <span class="k2">(</span> it <span class="k3">=</span><span class="k3">=</span> themeStack.end<span class="k2">(</span><span class="k2">)</span> <span class="k2">)</span></td></tr><tr><td class="number">171</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">172</td><td>            <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">173</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">174</td><td>&#160;</td></tr><tr><td class="number">175</td><td>        <span class="k1">if</span> <span class="k2">(</span> mouseX <span class="k3">&gt;</span><span class="k3">=</span> rectInfo<span class="k2">[</span> i <span class="k2">]</span>.x <span class="k3">&amp;</span><span class="k3">&amp;</span></td></tr><tr><td class="number">176</td><td>             mouseY <span class="k3">&gt;</span><span class="k3">=</span> rectInfo<span class="k2">[</span> i <span class="k2">]</span>.y <span class="k3">&amp;</span><span class="k3">&amp;</span></td></tr><tr><td class="number">177</td><td>             mouseX <span class="k3">&lt;</span>  <span class="k2">(</span> rectInfo<span class="k2">[</span> i <span class="k2">]</span>.x <span class="k3">+</span> rectInfo<span class="k2">[</span> i <span class="k2">]</span>.width <span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span></td></tr><tr><td class="number">178</td><td>             mouseY <span class="k3">&lt;</span>  <span class="k2">(</span> rectInfo<span class="k2">[</span> i <span class="k2">]</span>.y <span class="k3">+</span> rectInfo<span class="k2">[</span> i <span class="k2">]</span>.height <span class="k2">)</span> <span class="k2">)</span></td></tr><tr><td class="number">179</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">180</td><td>            mousePtr <span class="k3">=</span> MP_HAND<span class="k2">;</span></td></tr><tr><td class="number">181</td><td>&#160;</td></tr><tr><td class="number">182</td><td>            this-&gt;over <span class="k3">=</span> <span class="k2">(</span> i <span class="k3">+</span> this-&gt;place <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">183</td><td>&#160;</td></tr><tr><td class="number">184</td><td>            <span class="k1">if</span> <span class="k2">(</span> mouse1Clicked <span class="k2">)</span></td></tr><tr><td class="number">185</td><td>            <span class="k2">{</span></td></tr><tr><td class="number">186</td><td>                mouse1Clicked <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">187</td><td>                mousePtr <span class="k3">=</span> MP_ARROW<span class="k2">;</span></td></tr><tr><td class="number">188</td><td>&#160;</td></tr><tr><td class="number">189</td><td>                <span class="k1">if</span> <span class="k2">(</span> this-&gt;current <span class="k3">!</span><span class="k3">=</span> this-&gt;over <span class="k2">)</span></td></tr><tr><td class="number">190</td><td>                <span class="k2">{</span></td></tr><tr><td class="number">191</td><td>                    changeScreenShot<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">192</td><td>                <span class="k2">}</span></td></tr><tr><td class="number">193</td><td>            <span class="k2">}</span></td></tr><tr><td class="number">194</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">195</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">196</td><td><span class="k2">}</span></td></tr><tr><td class="number">197</td><td>&#160;</td></tr><tr><td class="number">198</td><td><span class="k1">void</span> ThemeList::changeScreenShot<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">199</td><td><span class="k2">{</span></td></tr><tr><td class="number">200</td><td>    Theme tempTheme<span class="k2">;</span></td></tr><tr><td class="number">201</td><td>&#160;</td></tr><tr><td class="number">202</td><td>    <span class="k1">if</span> <span class="k2">(</span> this-&gt;screenShot <span class="k2">)</span></td></tr><tr><td class="number">203</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">204</td><td>        <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span> this-&gt;screenShot <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">205</td><td>        this-&gt;screenShot <span class="k3">=</span> NULL<span class="k2">;</span></td></tr><tr><td class="number">206</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">207</td><td>&#160;</td></tr><tr><td class="number">208</td><td>    this-&gt;current <span class="k3">=</span> this-&gt;over<span class="k2">;</span></td></tr><tr><td class="number">209</td><td>&#160;</td></tr><tr><td class="number">210</td><td>    <span class="k1">if</span> <span class="k2">(</span> this-&gt;getCurrentFilename<span class="k2">(</span><span class="k2">)</span> <span class="k2">)</span></td></tr><tr><td class="number">211</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">212</td><td>        <span class="k1">if</span> <span class="k2">(</span> tempTheme.load<span class="k2">(</span> this-&gt;getCurrentFilename<span class="k2">(</span><span class="k2">)</span> <span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span> <span class="k2">)</span></td></tr><tr><td class="number">213</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">214</td><td>            this-&gt;screenShot <span class="k3">=</span> tempTheme.getScreenshot<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">215</td><td>            tempTheme.unload<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">216</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">217</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">218</td><td><span class="k2">}</span></td></tr><tr><td class="number">219</td><td>&#160;</td></tr><tr><td class="number">220</td><td><span class="k1">void</span> ThemeList::moveUp<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">221</td><td><span class="k2">{</span></td></tr><tr><td class="number">222</td><td>    <span class="k1">if</span> <span class="k2">(</span> this-&gt;place <span class="k3">&gt;</span> <span class="n">0</span> <span class="k2">)</span></td></tr><tr><td class="number">223</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">224</td><td>        this-&gt;place--<span class="k2">;</span></td></tr><tr><td class="number">225</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">226</td><td><span class="k2">}</span></td></tr><tr><td class="number">227</td><td>&#160;</td></tr><tr><td class="number">228</td><td><span class="k1">void</span> ThemeList::moveDown<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">229</td><td><span class="k2">{</span></td></tr><tr><td class="number">230</td><td>    <span class="k1">if</span> <span class="k2">(</span> this-&gt;place <span class="k3">&lt;</span> <span class="k2">(</span> this-&gt;count <span class="k3">-</span> <span class="n">10</span> <span class="k2">)</span> <span class="k2">)</span></td></tr><tr><td class="number">231</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">232</td><td>        this-&gt;place<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">233</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">234</td><td><span class="k2">}</span></td></tr><tr><td class="number">235</td><td>&#160;</td></tr><tr><td class="number">236</td><td><span class="k1">char</span> <span class="k3">*</span>ThemeList::getCurrentFilename<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">237</td><td><span class="k2">{</span></td></tr><tr><td class="number">238</td><td>    <span class="k1">if</span> <span class="k2">(</span> themeStack.size<span class="k2">(</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span> <span class="k2">)</span></td></tr><tr><td class="number">239</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">240</td><td>        <span class="k1">return</span> NULL<span class="k2">;</span></td></tr><tr><td class="number">241</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">242</td><td>&#160;</td></tr><tr><td class="number">243</td><td>    std::list<span class="k3">&lt;</span>ThemeInfo&gt;::iterator it <span class="k3">=</span> themeStack.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">244</td><td>    <span class="k1">for</span> <span class="k2">(</span> <span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> this-&gt;current<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span> <span class="k2">)</span></td></tr><tr><td class="number">245</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">246</td><td>        it<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">247</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">248</td><td>&#160;</td></tr><tr><td class="number">249</td><td>    <span class="k1">return</span> <span class="k2">(</span><span class="k3">*</span>it<span class="k2">)</span>.filename<span class="k2">;</span></td></tr><tr><td class="number">250</td><td><span class="k2">}</span></td></tr><tr><td class="number">251</td><td>&#160;</td></tr><tr><td class="number">252</td><td><span class="k1">void</span> ThemeList::apply<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">253</td><td><span class="k2">{</span></td></tr><tr><td class="number">254</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_756.html" target="_blank">strcpy</a><span class="k2">(</span> themeName, currentThemeName <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">255</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (DanielH)</author>
		<pubDate>Sun, 21 May 2006 21:49:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>With this code
</p><div class="source-code snippet"><div class="inner"><pre>    <span class="k1">for</span> <span class="k2">(</span> <span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> <span class="n">10</span><span class="k2">;</span> it<span class="k3">+</span><span class="k3">+</span>, i<span class="k3">+</span><span class="k3">+</span> <span class="k2">)</span>
    <span class="k2">{</span>
        <span class="k1">if</span> <span class="k2">(</span> it <span class="k3">=</span><span class="k3">=</span> themeStack.end<span class="k2">(</span><span class="k2">)</span> <span class="k2">)</span>
        <span class="k2">{</span>
            <span class="k1">break</span><span class="k2">;</span>
        <span class="k2">}</span>
</pre></div></div><p>
You did good checking if it is invalid, but with two other loops you forgot to :x.</p><div class="source-code snippet"><div class="inner"><pre>    std::list<span class="k3">&lt;</span>ThemeInfo&gt;::iterator it <span class="k3">=</span> themeStack.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
    <span class="k1">for</span> <span class="k2">(</span> <span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> this-&gt;place<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span> <span class="k2">)</span>
    <span class="k2">{</span>
        it<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
    <span class="k2">}</span>
</pre></div></div><p>
Never assume an iterator can be incremented and still valid
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Thu, 25 May 2006 02:49:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>this-&gt;place is always &lt;= to themeStack.size();
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (DanielH)</author>
		<pubDate>Thu, 25 May 2006 21:44:04 +0000</pubDate>
	</item>
</rss>
