Skip to content

Commit 2e2f71a

Browse files
authored
Fix incorrect atomic updates (#348)
1 parent 8d9c36c commit 2e2f71a

File tree

2 files changed

+23
-7
lines changed

2 files changed

+23
-7
lines changed

core/apple/test/SinkNSOutputStreamTest.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ class SinkNSOutputStreamTest {
8080
assertContentEquals(byteArray, data.toByteArray())
8181
assertContentEquals(byteArray, sink.buffer.readByteArray())
8282
}
83+
8384
is RealSink -> assertContentEquals(byteArray, (sink.sink as Buffer).readByteArray())
8485
}
8586
}
@@ -128,16 +129,19 @@ class SinkNSOutputStreamTest {
128129
source.usePinned {
129130
assertEquals(
130131
data.length.convert(),
131-
out.write(it.addressOf(written.value).reinterpret(), data.length.convert())
132+
out.write(
133+
it.addressOf(written.getAndAdd(data.length)).reinterpret(),
134+
data.length.convert()
135+
)
132136
)
133-
written.value += data.length
134137
}
135138
}
136139
val writtenData = out.propertyForKey(NSStreamDataWrittenToMemoryStreamKey) as NSData
137140
assertEquals(data, writtenData.toByteArray().decodeToString())
138141
out.close()
139142
completed.unlock()
140143
}
144+
141145
else -> fail("unexpected event ${handleEvent.asString()}")
142146
}
143147
}

core/apple/test/SourceNSInputStreamTest.kt

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -83,11 +83,17 @@ class SourceNSInputStreamTest {
8383

8484
byteArray.fill(-5)
8585
assertEquals(Segment.SIZE.convert(), input.read(cPtr, lengthPlusOne.convert()))
86-
assertEquals("[97${", 98".repeat(Segment.SIZE - 1)}${", -5".repeat(Segment.SIZE + 3)}]", byteArray.contentToString())
86+
assertEquals(
87+
"[97${", 98".repeat(Segment.SIZE - 1)}${", -5".repeat(Segment.SIZE + 3)}]",
88+
byteArray.contentToString()
89+
)
8790

8891
byteArray.fill(-6)
8992
assertEquals(Segment.SIZE.convert(), input.read(cPtr, lengthPlusOne.convert()))
90-
assertEquals("[98${", 98".repeat(Segment.SIZE - 1)}${", -6".repeat(Segment.SIZE + 3)}]", byteArray.contentToString())
93+
assertEquals(
94+
"[98${", 98".repeat(Segment.SIZE - 1)}${", -6".repeat(Segment.SIZE + 3)}]",
95+
byteArray.contentToString()
96+
)
9197

9298
byteArray.fill(-7)
9399
assertEquals(2, input.read(cPtr, lengthPlusOne.convert()))
@@ -140,15 +146,16 @@ class SourceNSInputStreamTest {
140146
NSStreamEventOpenCompleted -> opened.unlock()
141147
NSStreamEventHasBytesAvailable -> {
142148
sink.usePinned {
143-
assertEquals(1, input.read(it.addressOf(read.value).reinterpret(), 1U))
144-
read.value++
149+
assertEquals(1, input.read(it.addressOf(read.getAndIncrement()).reinterpret(), 1U))
145150
}
146151
}
152+
147153
NSStreamEventEndEncountered -> {
148154
assertEquals(data, sink.decodeToString())
149155
input.close()
150156
completed.unlock()
151157
}
158+
152159
else -> fail("unexpected event ${handleEvent.asString()}")
153160
}
154161
}
@@ -211,6 +218,7 @@ class SourceNSInputStreamTest {
211218
completed.unlock()
212219
}
213220
}
221+
214222
NSStreamEventEndEncountered -> fail("$data shouldn't be subscribed")
215223
else -> fail("unexpected event ${handleEvent.asString()}")
216224
}
@@ -248,12 +256,16 @@ class SourceNSInputStreamTest {
248256
NSStreamEventHasBytesAvailable -> {
249257
val sink = ByteArray(data.length)
250258
sink.usePinned {
251-
assertEquals(data.length.convert(), input.read(it.addressOf(0).reinterpret(), data.length.convert()))
259+
assertEquals(
260+
data.length.convert(),
261+
input.read(it.addressOf(0).reinterpret(), data.length.convert())
262+
)
252263
}
253264
assertEquals(data, sink.decodeToString())
254265
input.close()
255266
available.unlock()
256267
}
268+
257269
else -> fail("unexpected event ${handleEvent.asString()}")
258270
}
259271
}

0 commit comments

Comments
 (0)