summaryrefslogtreecommitdiffhomepage
path: root/ios/MullvadRustRuntime/String+UnsafePointer.swift
diff options
context:
space:
mode:
authorJon Petersson <jon.petersson@mullvad.net>2025-04-15 15:53:59 +0200
committerJon Petersson <jon.petersson@mullvad.net>2025-04-15 15:53:59 +0200
commitc90a98e3430c8047b17b12ca9646af6d4478d3ea (patch)
treed0f5fa50299da5bfeb65ed591e6c16c70e5cc4dc /ios/MullvadRustRuntime/String+UnsafePointer.swift
parenteffafb699b8f6831cbc6df0bcaa51766d9a44718 (diff)
parent14db956bcd66b841734ed86b647e95f69034bffe (diff)
downloadmullvadvpn-c90a98e3430c8047b17b12ca9646af6d4478d3ea.tar.xz
mullvadvpn-c90a98e3430c8047b17b12ca9646af6d4478d3ea.zip
Merge branch 'implement-sendproblemreport-using-mullvad-api-ios-1134-2'
Diffstat (limited to 'ios/MullvadRustRuntime/String+UnsafePointer.swift')
-rw-r--r--ios/MullvadRustRuntime/String+UnsafePointer.swift27
1 files changed, 27 insertions, 0 deletions
diff --git a/ios/MullvadRustRuntime/String+UnsafePointer.swift b/ios/MullvadRustRuntime/String+UnsafePointer.swift
new file mode 100644
index 0000000000..1cb2017c96
--- /dev/null
+++ b/ios/MullvadRustRuntime/String+UnsafePointer.swift
@@ -0,0 +1,27 @@
+//
+// String+UnsafePointer.swift
+// MullvadVPN
+//
+// Created by Mojgan on 2025-04-02.
+// Copyright © 2025 Mullvad VPN AB. All rights reserved.
+//
+
+import Foundation
+
+extension String {
+ // Ensure the string is converted to a null-terminated C string
+ // UnsafePointer provides no automated memory management or alignment guarantees.
+ // The caller is responsible to manage the memory
+ func toCStringPointer() -> UnsafePointer<CChar>? {
+ // Convert the Swift string to a null-terminated UTF-8 C string
+ guard let cString = cString(using: .utf8) else { return nil }
+
+ // Allocate memory for characters + null terminator
+ let pointer = UnsafeMutablePointer<CChar>.allocate(capacity: cString.count)
+
+ // Copy the characters (including the null terminator)
+ pointer.initialize(from: cString, count: cString.count)
+
+ return UnsafePointer(pointer)
+ }
+}