Newbie questions about Pliant

Newbie questions about Pliant

Lists of Strings

I get garbage after inserting strings in a list
Doing the same with List:Float it works
Message posted by grings on 2005/11/11 18:34:20
I get garbage after inserting strings in a list 
Doing the same with List:Float it works
------8<---------------------------------------------------
module "/pliant/language/compiler.pli" #For the List type
constant FloatQueue List:Float
constant StrQueue List:Str

method q enqueue v 
  arg_rw FloatQueue q; arg Float v  
  q += v
    
method q dequeue -> v
  arg_rw FloatQueue q; arg Float v
  
  var Pointer:Float pv :> q first
  q -= pv
  v:= pv

method q enqueue v 
  arg_rw StrQueue q; arg Str v  
  q += v
    
method q dequeue -> v
  arg_rw StrQueue q; arg Str v
  
  var Pointer:Str pv :> q first
  q -= pv
  v:= pv

#tests

gvar FloatQueue fq
gvar Float f:=0
gvar Int i

for i 0 10
  fq enqueue f+i

for i 0 10
  console (fq dequeue) eol

gvar StrQueue sq
gvar Str s:="s"

for i 0 10
  console s+(string:i) eol
  sq enqueue (s+(string:i))

for i 0 10
  console (sq dequeue) eol
Message posted by hubert.tonneau on 2005/11/11 18:43:04
The following is buggy:
  q -= pv
  v := pv
basically, you are accessing a just freed object !

Must be done the other way round:
  v := pv
  q -= pv

Message posted by grings on 2005/11/11 19:03:04
Shame on me :)

Thanks.