Skip to content

Commit

Permalink
🔀 Merge pull request #171 from zhufucdev/main
Browse files Browse the repository at this point in the history
🐛 Fix Apple PlatformInputStream
  • Loading branch information
vinceglb authored Jan 13, 2025
2 parents acd0389 + 9b8d2ff commit b744d0f
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,9 @@ import kotlinx.coroutines.withContext
import platform.Foundation.NSData
import platform.Foundation.NSDataReadingUncached
import platform.Foundation.NSError
import platform.Foundation.NSInputStream
import platform.Foundation.NSURL
import platform.Foundation.NSURLFileSizeKey
import platform.Foundation.dataWithContentsOfURL
import platform.Foundation.lastPathComponent
import platform.posix.memcpy

public actual data class PlatformFile(
Expand Down Expand Up @@ -54,7 +52,7 @@ public actual data class PlatformFile(
}

public actual fun getStream(): PlatformInputStream {
return PlatformInputStream(NSInputStream(nsUrl))
return PlatformInputStream(nsUrl)
}

@OptIn(ExperimentalForeignApi::class, BetaInteropApi::class)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,14 @@ import kotlinx.cinterop.ExperimentalForeignApi
import kotlinx.cinterop.allocArray
import kotlinx.cinterop.get
import kotlinx.cinterop.memScoped
import platform.Foundation.NSURL
import platform.Foundation.NSInputStream
import platform.posix.uint8_tVar

public actual class PlatformInputStream(private val nsInputStream: NSInputStream) : AutoCloseable {

public actual class PlatformInputStream(private val nsUrl: NSURL) : AutoCloseable {
public val nsInputStream: NSInputStream = NSInputStream(nsUrl)
init {
nsUrl.startAccessingSecurityScopedResource()
nsInputStream.open()
}

Expand All @@ -26,11 +28,12 @@ public actual class PlatformInputStream(private val nsInputStream: NSInputStream
for (i in 0 until numRead) {
buffer[i] = pointerBuffer[i].toByte()
}
numRead
numRead.takeIf { it > 0 } ?: -1
}
}

actual override fun close() {
nsInputStream.close()
nsUrl.stopAccessingSecurityScopedResource()
}
}

0 comments on commit b744d0f

Please sign in to comment.