There are certain matrix operations that causes the garbage collector to ignore some /matrix objects for cleanup.
Numbered Steps to Reproduce Problem:
Perform the matrix operations.
Exit the current block scope.
Code Snippet (if applicable) to Reproduce Problem:
var/matrix/one = new()
one *= new/matrix(rand(),rand(),rand(),rand(),rand(),rand()) //This is leaky
one = turn(one,rand(0,360)) //This is also leaky
The matrix datums generated by new/matrix() and turn() should be cleaned up.
The matrix datums generated by new/matrix() and turn() are not cleaned up.
Does the problem occur:
Every time? Or how often?
In other games?
In other user accounts?
On other computers?
When does the problem NOT occur?
There are some workaround operations that does not generate a leak.
Replacing matrix*=asdf with matrix.Multiply(asdf) and replacing matrix=turn(matrix,asdf) with matrix.Turn(asdf) will not cause the leak.
Did the problem NOT occur in any earlier versions? If so, what was the last version that worked? (Visit http://www.byond.com/download/build to download old versions for testing.)
Workaround operations are explored above.