<span style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif">Hi everyone,</span><br style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif">
<br style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif"><span style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif">I am trying to write a simple batch Excel extractor: </span><br style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif">

<span style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif">I have an array of file names that I created a .each loop for. In the loop (under Exception handling) I open that file, add the name of the file to another spreadsheet (which I created earlier), then move on to the next file.</span><br style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif">

<br style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif"><span style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif">This works great for the first 3 files, but after that I get malloc errors and eventually the app crashes with an EXC_BAD_ACCESS error in the Garbage Collection Work Queue. </span><br style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif">

<br style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif"><span style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif">Code:</span><br style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif">

<br style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif"><font face="courier new, monospace" style="color:rgb(34,34,34);font-size:13.333333969116211px">require &#39;rubygems&#39;<br>
</font><span style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:&#39;courier new&#39;,monospace">require &#39;write_xlsx&#39;</span><font face="courier new, monospace" style="color:rgb(34,34,34);font-size:13.333333969116211px"><br>

</font><span style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:&#39;courier new&#39;,monospace">require &#39;roo&#39;</span><font face="courier new, monospace" style="color:rgb(34,34,34);font-size:13.333333969116211px"><br>

<br><br>class SimpleExcelExtractor<br></font><span style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:&#39;courier new&#39;,monospace">    attr_accessor :input_path, :output_path, :input_button, :output_button</span><font face="courier new, monospace" style="color:rgb(34,34,34);font-size:13.333333969116211px"><br>

</font><span style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:&#39;courier new&#39;,monospace">    attr_accessor :quit_button, :go_button, :sheet_text, :column_text, :row_text</span><font face="courier new, monospace" style="color:rgb(34,34,34);font-size:13.333333969116211px"><br>

<br>    <br>GUI Stuff</font><div style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif"><font face="courier new, monospace">...</font></div><div style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif">

<font face="courier new, monospace">...</font></div><div style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif"><font face="courier new, monospace">...<br>
    def run_func(input, filelist, sheet, column, row, output)<br><br>        row = col = 0<br>        wb = WriteXLSX.new(output)<br>        worksheet = wb.add_worksheet<br>        p filelist<br><br>        filelist.each do |f|<br>

<br>            begin<br>                input_file = Excelx.new(input + &quot;/&quot; + f)<br>                p &quot;Opened file: &quot; + f<br>                worksheet.write(row, col, f)<br>                p &quot;Wrote it up&quot;<br>

                row += 1<br>                p &quot;Went ahead&quot;<br>                input_file<br><br>            rescue Exception =&gt; e<br>                p e<br>            end<br>        end<br><br>        p &quot;Saving now&quot;<br>

        wb.write<br>        p &quot;Saved&quot;<br><br>    end<br><br>    def quit_func(sender)<br>    end<br>end</font></div><div style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif">
<font face="courier new, monospace"><br></font></div><div style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif"><font face="arial, helvetica, sans-serif">Debug output:</font></div>
<div style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif"><font face="arial, helvetica, sans-serif"><br></font></div><div style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif">

<p><b>[&quot;test 2.xlsx&quot;, &quot;test.xlsx&quot;, &quot;test2 2.xlsx&quot;, &quot;test2.xlsx&quot;, &quot;test3 2.xlsx&quot;, &quot;test3.xlsx&quot;, &quot;test4 2.xlsx&quot;, &quot;test4.xlsx&quot;]</b></p><p><b>&quot;Opened file: test 2.xlsx&quot;</b></p>

<p><b>&quot;Wrote it up&quot;</b></p><p><b>&quot;Went ahead&quot;</b></p><p><b>&quot;Opened file: test.xlsx&quot;</b></p><p><b>&quot;Wrote it up&quot;</b></p><p><b>&quot;Went ahead&quot;</b></p><p><b>&quot;Opened file: test2 2.xlsx&quot;</b></p>

<p><b>&quot;Wrote it up&quot;</b></p><p><b>&quot;Went ahead&quot;</b></p><p><b>&quot;Opened file: test2.xlsx&quot;</b></p><p><b>SimpleExcelExtractor(57679,0x1082f6000) malloc: *** free() called on collectable block with 0x401234b20 with refcount 0 (ignored)</b></p>

<p><b>&quot;Wrote it up&quot;</b></p><p><b>&quot;Went ahead&quot;</b></p><p><b>SimpleExcelExtractor(57679,0x1082f6000) malloc: *** free() called on collectable block with 0x4016622e0 with refcount 0 (ignored)</b></p><p><b>SimpleExcelExtractor(57679,0x1082f6000) malloc: *** free() called on collectable block with 0x40127b640 with refcount 0 (ignored)</b></p>

<p><b>SimpleExcelExtractor(57679,0x1082f6000) malloc: *** free() called on collectable block with 0x40138b7a0 with refcount 0 (ignored)</b></p><p><b>SimpleExcelExtractor(57679,0x1082f6000) malloc: *** free() called on collectable block with 0x40154cd40 with refcount 0 (ignored)</b></p>

<p><b>SimpleExcelExtractor(57679,0x1082f6000) malloc: *** free() called on collectable block with 0x40136d4c0 with refcount 0 (ignored)</b></p><p><b>SimpleExcelExtractor(57679,0x1082f6000) malloc: *** free() called on collectable block with 0x4016d2620 with refcount 0 (ignored)</b></p>

<p><b>(lldb) </b></p><br>Then in the Debug window it has the following in the Garbage Collector Work Queue:</div><div style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif">
<br></div><div style="color:rgb(34,34,34);font-size:13.333333969116211px;font-family:arial,sans-serif"><p>#include &lt;xml_node_set.h&gt;</p><p>#include &lt;libxml/xpathInternals.h&gt;</p>
<p><br></p><p>static ID decorate ;</p><p><br></p><p>static int dealloc_namespace(xmlNsPtr ns)</p><p>{</p><p>  if (ns-&gt;href)                                          &lt;----Thread 12: EXC_BAD_ACCESS (code=1, address = 0x22)</p>

<p>    xmlFree((xmlChar *)ns-&gt;href);</p><p>  if (ns-&gt;prefix)</p><p>    xmlFree((xmlChar *)ns-&gt;prefix);</p><p>  xmlFree(ns);</p><p>  return ST_CONTINUE;</p><p>}</p><div><br></div></div><div><br></div>-- <br>F. Timur Senguen, Ph.D.<div>

VP of Testing and Science</div><div>Reviewed.com - A division of USAToday</div><div><span style="border-collapse:collapse;font-family:arial,sans-serif;font-size:13px">411A Highland Ave</span></div><div><span style="border-collapse:collapse;font-family:arial,sans-serif;font-size:13px">Somerville, MA 02155</span></div>

<div><span style="border-collapse:collapse;font-family:arial,sans-serif;font-size:13px">USA</span></div><div><span style="border-collapse:collapse;font-family:arial,sans-serif;font-size:13px"><a href="http://reviewed.com" target="_blank">reviewed.com</a></span></div>

<br>