Skip to content

Commit b2bbfb9

Browse files
committed
fix: guard buffer writes against nil to avoid mutating shared emptyBuffer
1 parent 4eec577 commit b2bbfb9

1 file changed

Lines changed: 7 additions & 4 deletions

File tree

TablePro/Models/Query/RowProvider.swift

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,8 @@ final class InMemoryRowProvider: RowProvider {
163163
guard rowIndex < totalRowCount else { return }
164164
let sourceIndex = resolveSourceIndex(rowIndex)
165165
if let bufferIdx = sourceIndex.bufferIndex {
166-
safeBuffer.rows[bufferIdx][columnIndex] = value
166+
guard let buffer = rowBuffer else { return }
167+
buffer.rows[bufferIdx][columnIndex] = value
167168
displayCache.removeValue(forKey: bufferIdx)
168169
} else if let appendedIdx = sourceIndex.appendedIndex {
169170
appendedRows[appendedIdx][columnIndex] = value
@@ -231,7 +232,8 @@ final class InMemoryRowProvider: RowProvider {
231232

232233
/// Update rows by replacing the buffer contents and clearing appended rows
233234
func updateRows(_ newRows: [[String?]]) {
234-
safeBuffer.rows = newRows
235+
guard let buffer = rowBuffer else { return }
236+
buffer.rows = newRows
235237
appendedRows.removeAll()
236238
sortIndices = nil
237239
displayCache.removeAll()
@@ -254,17 +256,18 @@ final class InMemoryRowProvider: RowProvider {
254256
guard appendedIdx < appendedRows.count else { return }
255257
appendedRows.remove(at: appendedIdx)
256258
} else {
259+
guard let buffer = rowBuffer else { return }
257260
if let sorted = sortIndices {
258261
let bufferIdx = sorted[index]
259-
safeBuffer.rows.remove(at: bufferIdx)
262+
buffer.rows.remove(at: bufferIdx)
260263
var newIndices = sorted
261264
newIndices.remove(at: index)
262265
for i in newIndices.indices where newIndices[i] > bufferIdx {
263266
newIndices[i] -= 1
264267
}
265268
sortIndices = newIndices
266269
} else {
267-
safeBuffer.rows.remove(at: index)
270+
buffer.rows.remove(at: index)
268271
}
269272
}
270273
displayCache.removeAll()

0 commit comments

Comments
 (0)