From a20339a1f2b370d0447e05530901361cb8bafa99 Mon Sep 17 00:00:00 2001 From: Shadowfacts Date: Sat, 10 Dec 2022 15:42:28 -0500 Subject: [PATCH] Don't use no copy string initializer --- .../Sources/highlight-swift/highlight_swift.swift | 9 +++++---- .../Tests/highlight-swift-tests/HighlightTests.swift | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/highlight-swift/Sources/highlight-swift/highlight_swift.swift b/highlight-swift/Sources/highlight-swift/highlight_swift.swift index cd12e2c..f15ef8d 100644 --- a/highlight-swift/Sources/highlight-swift/highlight_swift.swift +++ b/highlight-swift/Sources/highlight-swift/highlight_swift.swift @@ -2,10 +2,11 @@ import Foundation import Splash @_cdecl("highlight_swift") -public func highlight(codePtr: UnsafeRawPointer, codeLen: UInt64, htmlLenPtr: UnsafeMutablePointer) -> UnsafeMutableRawPointer { - // don't free, the underlying data is owned by rust - let code = String(bytesNoCopy: UnsafeMutableRawPointer(mutating: codePtr), length: Int(codeLen), encoding: .utf8, freeWhenDone: false)! - +public func highlight(codePtr: UnsafePointer, codeLen: UInt64, htmlLenPtr: UnsafeMutablePointer) -> UnsafeMutableRawPointer { + let buf = UnsafeBufferPointer(start: codePtr, count: Int(codeLen)) + let data = Data(buffer: buf) + let code = String(data: data, encoding: .utf8)! + let highligher = SyntaxHighlighter(format: MyOutputFormat()) var html = highligher.highlight(code) let outPtr = UnsafeMutableBufferPointer.allocate(capacity: html.utf8.count) diff --git a/highlight-swift/Tests/highlight-swift-tests/HighlightTests.swift b/highlight-swift/Tests/highlight-swift-tests/HighlightTests.swift index a7eb043..c5518cb 100644 --- a/highlight-swift/Tests/highlight-swift-tests/HighlightTests.swift +++ b/highlight-swift/Tests/highlight-swift-tests/HighlightTests.swift @@ -18,7 +18,7 @@ class HighlightTests: XCTestCase { var len: UInt64 = 0 let result = code.withUTF8 { codePtr in withUnsafeMutablePointer(to: &len) { lenPtr in - highlight(codePtr: UnsafeRawPointer(codePtr.baseAddress!), codeLen: UInt64(codePtr.count), htmlLenPtr: lenPtr) + highlight(codePtr: codePtr.baseAddress!, codeLen: UInt64(codePtr.count), htmlLenPtr: lenPtr) } } let start = UnsafePointer(result.assumingMemoryBound(to: UInt8.self))