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