I have an absurd problem in my ruby-code. I tried recreating the
same problem in a small piece of code, but impossible!
Therefore I have to show you that buggy part in my application-code.


/edit.rb:417:in `get_state': vspace has not been removed correct!  (RuntimeError)
        right.empty?   true
        current.class  LineObjects::VSpace
        left.size      12
        objs.size      11
        from ./edit.rb:408:in `each'
        from ./edit.rb:408:in `get_state'
        from ./buffer.rb:312:in `get_state'
        from ./history.rb:12:in `get_memento'
        from ./control.rb:8:in `get_memento'
        from ./history.rb:31:in `execute'
        from ./control.rb:189:in `dispatch'
        from ./main.rb:24:in `run'
        from ./main.rb:22:in `loop'
        from ./main.rb:25:in `run'
        from ./main.rb:35:in `launch'
        from ./aeditor:3


I don't understand why this exception occur... can someone enligthen me ?


  # purpose:
  # take a snapshot of current state, maybe restore it later
  # used by memento
  def get_state
    objs = @left
    objs << @current if @current
    objs += @right
    if objs.last.kind_of?(LineObjects::VSpace)
      objs.pop
    end
    objs.each do |obj|
      if obj.kind_of?(LineObjects::VSpace)
        msg =<<MSG
vspace has not been removed correct!
\tright.empty?   #{@right.empty?}
\tcurrent.class  #{@current.class.to_s}
\tleft.size      #{@left.size}
\tobjs.size      #{objs.size}
MSG
        raise msg
      end
    end
    [position, objs]
  end


The output indicates that the last element has
successfully been removed... but during the objs.each
then its still present.

Why is it still present ?
How can I remove the last element ?

--
Simon Strandgaard