Hi Charles
After two days of hunt and fight with mem leak i think that i found what is problem.
There is no difference with last version of oxygen and one i used before.
Problem i have found in local string array which is not released after RETURN is executed.
Your expression evaluator work perfect and very fast in my case also as few others
without producing any mem leak...which is good i think.
so ..here is code where memory growe...
SUB exec_SET
'STRING arg[20] 'after RETURN this LOCAL string array is NOT released
INT n=1
'count
'arg[n]=arg1[PC]
'If arg[n]=""
' Return
'Else
if n=1
ParseExpr(arg1[PC])
' true if is not empty
' because is true RETURN must work ?
End If
' do i must use EXIT SUB ? why is next line executed after RETURN?
If arg2[PC] = "" then Return
this string array is constantly invoked inside loop and that is my mistake
because i think that should be relesed after exiting subroutine but is not...
is this normal ? ...i don't know
( i will also remove some similar parts in interpreter too)
Another thing which i often see is that print(messagebox) ignore RETURN command and is
executed ...
Is EXIT SUB same as RETURN ?
I mean is EXIT SUB return execution to position from where is called specific subroutine?
thanks Aurel