Some patches committed last evening nearly took care of the problem -- at 
least they appeared to make my small example appear to 
work.  Sometimes.  :)  Here's a slightly larger but better example that so 
far hasn't failed to show the stack corruption problem anywhere:

TOKENIZER:
         set S2, "one;two;three;four;five;six;seven;eight;nine;ten;eleven"
         set I5, 0    # Stack pointer
         set S0, ""   # Accumulating here

TOKLOOP:
         length I0, S2
         eq I0, 0, ENDTOK      # Empty yet?
         substr S1, S2, 0, 1   # Peel off first character
         dec I0
         substr S2, S2, 1, I0
         eq S1, ";", SOMETHING # Break or append chars..
         concat S0, S1
         branch TOKLOOP

SOMETHING:
         print S0
         print "<-- save ( ;boundary)\n"
         savec S0
         set S0, ""
         inc I5
         branch TOKLOOP

ENDTOK: length I0, S0
         eq I0, 0, TOKBAIL
         inc I5
         print S0
         print "<--saved (endproc)\n"
         savec S0

TOKBAIL:save I5
         #bsr DUMPSTACK
         end

Reply via email to