Skip to content

Commit ede888f

Browse files
authored
Merge pull request #1107 from MJegorovas/fixNSDataToByteString
Fix 'NSData.toByteString'
2 parents 22b5ed9 + 4766fe7 commit ede888f

File tree

2 files changed

+17
-6
lines changed

2 files changed

+17
-6
lines changed

okio/src/appleMain/kotlin/okio/ByteString.kt

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,16 @@ import platform.posix.memcpy
2222

2323
fun NSData.toByteString(): ByteString {
2424
val data = this
25-
return ByteString(
26-
ByteArray(data.length.toInt()).apply {
27-
usePinned { pinned ->
28-
memcpy(pinned.addressOf(0), data.bytes, data.length)
25+
val size = data.length.toInt()
26+
return if (size != 0) {
27+
ByteString(
28+
ByteArray(size).apply {
29+
usePinned { pinned ->
30+
memcpy(pinned.addressOf(0), data.bytes, data.length)
31+
}
2932
}
30-
}
31-
)
33+
)
34+
} else {
35+
ByteString.EMPTY
36+
}
3237
}

okio/src/appleTest/kotlin/okio/AppleByteStringTest.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,10 @@ class AppleByteStringTest {
2828
val byteString = data.toByteString()
2929
assertEquals("Hello", byteString.utf8())
3030
}
31+
32+
@Test fun emptyNsDataToByteString() {
33+
val data = ("" as NSString).dataUsingEncoding(NSUTF8StringEncoding) as NSData
34+
val byteString = data.toByteString()
35+
assertEquals(ByteString.EMPTY, byteString)
36+
}
3137
}

0 commit comments

Comments
 (0)