diff --git a/src/engine/function.cpp b/src/engine/function.cpp index 123963f5c..77ddd1671 100644 --- a/src/engine/function.cpp +++ b/src/engine/function.cpp @@ -340,10 +340,7 @@ struct _stack { using U = remove_cref_t; U result = std::move(top()); - check_alignment(); - data = (char *)data + sizeof(U); - check_alignment(); - --cleanups_size; + pop( 1 ); return result; } @@ -351,8 +348,9 @@ struct _stack template void pop( int32_t n ) { + using U = remove_cref_t; check_alignment(); - data = (char *)data + ( n * sizeof(remove_cref_t) ); + data = reinterpret_cast( data ) + n; check_alignment(); --cleanups_size; }