55
66using namespace netlm ;
77
8+ MethodInfo::~MethodInfo () {
9+ delete _parameterTypes;
10+ delete _returnType;
11+ }
12+
813std::string MethodInfo::GetName () const {
914 auto name = Managed.GetMethodInfoNameFptr (_handle);
1015 std::string str (name);
@@ -18,28 +23,27 @@ void* MethodInfo::GetFunctionAddress() const {
1823
1924Type& MethodInfo::GetReturnType () {
2025 if (!_returnType) {
21- _returnType = std::make_unique< Type> ();
26+ _returnType = new Type ();
2227 Managed.GetMethodInfoReturnTypeFptr (_handle, &_returnType->_handle );
2328 }
2429
2530 return *_returnType;
2631}
2732
2833const std::vector<Type>& MethodInfo::GetParameterTypes () {
29- if (_parameterTypes. empty () ) {
34+ if (! _parameterTypes) {
3035 int32_t parameterCount;
3136 Managed.GetMethodInfoParameterTypesFptr (_handle, nullptr , ¶meterCount);
3237 std::vector<ManagedHandle> parameterTypes (static_cast <size_t >(parameterCount));
3338 Managed.GetMethodInfoParameterTypesFptr (_handle, parameterTypes.data (), ¶meterCount);
3439
35- _parameterTypes.reserve (parameterTypes.size ());
36-
37- for (ManagedHandle parameterType : parameterTypes) {
38- _parameterTypes.emplace_back (parameterType);
39- }
40+ _parameterTypes = new std::vector<Type>();
41+ _parameterTypes->reserve (parameterTypes.size ());
42+ for (size_t i = 0 ; i < parameterTypes.size (); i++)
43+ _parameterTypes->emplace_back (parameterTypes[i]);
4044 }
4145
42- return _parameterTypes;
46+ return * _parameterTypes;
4347}
4448
4549TypeAccessibility MethodInfo::GetAccessibility () const {
0 commit comments