This is a multi-part message in MIME format.
--------------020300080208060109000905
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit


If I run this and press the "Pow!" button twice, I get a segfault. I've 
tried whittling the example down, but everything seems to play a role...

Turning off GC prevents it, so it may be that something's not getting 
marked correctly.

Versions:

FXRuby 1.0.13
Fox    1.0.11
Ruby   1.6.7
Mandrake-Linux 8.1

--------------020300080208060109000905
Content-Type: text/plain;
 nameug.rb"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filenameug.rb"

#!/usr/bin/env ruby

require "fox"
include Fox

if false
  puts "disabling GC"
  GC.disable  ### prevents SEGFAULT
end

class BugWindow < FXMainWindow
  include Responder

  def initialize(app)
    super(app, "Bug", nil, nil, DECOR_ALL, 0, 0, 0, 0)

    splitter  XSplitter.new(self, (LAYOUT_SIDE_TOP|LAYOUT_FILL_X|
      LAYOUT_FILL_Y| SPLITTER_TRACKING|SPLITTER_VERTICAL|SPLITTER_REVERSED))
  
    contents  XHorizontalFrame.new(splitter,
      LAYOUT_SIDE_TOP|FRAME_NONE|LAYOUT_FILL_X|LAYOUT_FILL_Y)
    
    table_frame  XHorizontalFrame.new(contents,
      FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_X|LAYOUT_FILL_Y)
    
    @table  XTable.new(table_frame, 0, 0, nil, 0,
      TABLE_COL_SIZABLE|TABLE_ROW_SIZABLE|LAYOUT_FILL_X|LAYOUT_FILL_Y,
      0,0,0,0, 2,2,2,2)
    
    @table.disable
    @table.setFont(FXFont.new(getApp(), "courier", 9, FONTWEIGHT_LIGHT))

    FXButton.new(splitter, "&Pow!", nil, self).
      connect(SEL_COMMAND, method(:onPow))
  end
    
  def onPow(sender, sel, index)
    foo ### this seems to be necessary for SEGFAULT
    @table.setTableSize 0,0
    
    # make some garbage
    dummy  il
    100000.times do |i|
      dummy  i]*10
    end
    
    @table.setTableSize(1000, 10)

    @table.enable ### this seems to be necessary for SEGFAULT

    return 1
  end
  
  def foo
    nr  table.numRows
    nc  table.numCols
    
    (1..nc-2).each { |c|
      item  table.getItem(nr-1, c) ### 'item   seems to be necessary
    }
  end

  def create
    position(200, 200, 600, 400)
    super
    show
  end
end

application  XApp.new("TEST", "TEST")
application.init(ARGV)
window  ugWindow.new(application)
application.create
application.run

--------------020300080208060109000905--