On Tuesday, 25 April 2017 at 22:21:33 UTC, Ali Çehreli wrote:
Just by guessing, what we don't see here is that there is a wrapping layer that does the copying. Disposal logic is called by that layer. So, your scope(exit) takes place at a higher layer. Here is made-up-pseudo-code by me. :)TypeForExcel wrapper_actually_called_by_excel(/* ... */) { /* ... */double[] ret_from_your_function = FuncReturnArrayNoGc(/* ... */);scope (exit) disposal_function(ret_from_your_function);TypeForExcel arg_to_excel = copy_for_excel(ret_from_your_function);return arg_to_excel; }
That makes it more obvious. So it still is really like a scope(exit), just some other function is managing when that occurs.
