diff --git a/native/Avalonia.Native/src/OSX/AvnString.mm b/native/Avalonia.Native/src/OSX/AvnString.mm index 9fb6101438..7b6f4c0a3e 100644 --- a/native/Avalonia.Native/src/OSX/AvnString.mm +++ b/native/Avalonia.Native/src/OSX/AvnString.mm @@ -11,7 +11,7 @@ class AvnStringImpl : public virtual ComSingleObject { private: - NSString* _string; + int _length; const char* _cstring; public: @@ -19,8 +19,11 @@ public: AvnStringImpl(NSString* string) { - _string = string; - _cstring = [_string cStringUsingEncoding:NSUTF8StringEncoding]; + auto cstring = [string cStringUsingEncoding:NSUTF8StringEncoding]; + _length = (int)[string lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; + + _cstring = (const char*)malloc(_length); + memcpy((void*)_cstring, (void*)cstring, _length); } virtual HRESULT Pointer(void**retOut) override @@ -45,7 +48,7 @@ public: return E_POINTER; } - *retOut = (int)[_string lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; + *retOut = _length; return S_OK; }