Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
GOTO inside a function question?
#1
I have two functions that have a return 0 


Code:
FUNCTION processTest(test INTEGER) as INTEGER

......processing stuff

IF X=1 THEN
   poke TestAddress, 1
   GOTO displayMsg
END IF

return 0
END FUNCTION


Does the this cause any memory leaks on the stack?
i.e. by not "returning" something is left on the stack and won't be removed?

I remember something about GOSUB/RETURN having this or am I okay to not RETURN (I am experimenting before you may say it's not "good practice  Smile    )


Thanks in advance
Reply
#2
(06-05-2021, 03:14 PM)RandomiserUsr Wrote: I have two functions that have a return 0 


Code:
FUNCTION processTest(test INTEGER) as INTEGER

......processing stuff

IF X=1 THEN
   poke TestAddress, 1
   GOTO displayMsg
END IF

return 0
END FUNCTION


Does the this cause any memory leaks on the stack?
i.e. by not "returning" something is left on the stack and won't be removed?

I remember something about GOSUB/RETURN having this or am I okay to not RETURN (I am experimenting before you may say it's not "good practice  Smile    )


Thanks in advance

okay so having changed the code around and no not jumping from a function with a GOTO rather than RETURN, the out of memory errors I was getting have gone.
Reply
#3
(06-05-2021, 09:13 PM)RandomiserUsr Wrote:
(06-05-2021, 03:14 PM)RandomiserUsr Wrote: I have two functions that have a return 0 


Code:
FUNCTION processTest(test INTEGER) as INTEGER

......processing stuff

IF X=1 THEN
   poke TestAddress, 1
   GOTO displayMsg
END IF

return 0
END FUNCTION


Does the this cause any memory leaks on the stack?
i.e. by not "returning" something is left on the stack and won't be removed?

I remember something about GOSUB/RETURN having this or am I okay to not RETURN (I am experimenting before you may say it's not "good practice  Smile    )


Thanks in advance

okay so having changed the code around and no not jumping from a function with a GOTO rather than RETURN, the out of memory errors I was getting have gone.

You cannot use GOSUB within a FUNCTION or SUB anymore (it will be forbidden in from version 1.15 onwards).
You CAN use GOTO within a FUNCTION or SUB provided it does not jump out of the function scope, otherwise, yes, the stack is corrupted. This will also be forbidden from version 1.15 onwards for the same reason.
Reply
#4
(06-06-2021, 10:19 PM)boriel Wrote:
(06-05-2021, 09:13 PM)RandomiserUsr Wrote:
(06-05-2021, 03:14 PM)RandomiserUsr Wrote: I have two functions that have a return 0 


Code:
FUNCTION processTest(test INTEGER) as INTEGER

......processing stuff

IF X=1 THEN
   poke TestAddress, 1
   GOTO displayMsg
END IF

return 0
END FUNCTION


Does the this cause any memory leaks on the stack?
i.e. by not "returning" something is left on the stack and won't be removed?

I remember something about GOSUB/RETURN having this or am I okay to not RETURN (I am experimenting before you may say it's not "good practice  Smile    )


Thanks in advance

okay so having changed the code around and no not jumping from a function with a GOTO rather than RETURN, the out of memory errors I was getting have gone.

You cannot use GOSUB within a FUNCTION or SUB anymore (it will be forbidden in from version 1.15 onwards).
You CAN use GOTO within a FUNCTION or SUB provided it does not jump out of the function scope, otherwise, yes, the stack is corrupted. This will also be forbidden from version 1.15 onwards for the same reason.

Thanks for the confirmation  

I have refactored the code so this does not happen again and now no more out of memory issues :-)

When's the next release due?

thanks
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)