Переглянути джерело

make a copy of the clipboard string.

Dan Walmsley 6 роки тому
батько
коміт
a1c458417b
1 змінених файлів з 7 додано та 4 видалено
  1. 7 4
      native/Avalonia.Native/src/OSX/AvnString.mm

+ 7 - 4
native/Avalonia.Native/src/OSX/AvnString.mm

@@ -11,7 +11,7 @@
 class AvnStringImpl : public virtual ComSingleObject<IAvnString, &IID_IAvnString>
 {
 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;
     }