                                     throw CSVProcessorErrors.rowTooLarge(row: row)
                                 }
                                 // Extend the array.
-                                try fetchNewData(buf: &buf, lineStart: lineStart)
+                                try fetchNewData(lineStart: lineStart)
                                 offset = 0
                                 return try parseRow(
-                                    buf: &buf,
                                     offset: &offset,
                                     cellArray: &cellArray,
                                     row: row)

    /// the buffer.
    @usableFromInline
    func fetchNewData(
        buf: inout UnsafeMutableBufferPointer<UInt8>,
        lineStart: Int
    ) throws {
        assert(
            validBufferBytes == buf.count,
            "buf.count: \(buf.count), validBufferBytes: \(validBufferBytes)"
        )
        let moveCount = buf.count - lineStart
        bufferStartOffset += buf.count - moveCount
        memmove(buf.baseAddress!, buf.baseAddress! + lineStart, moveCount)
        let readCount = input.read(
            buf.baseAddress! + moveCount,
            maxLength: buf.count - moveCount)
        validBufferBytes = readCount + moveCount
    }


            let cellStart = offset
            // Note: we leverage the fact that all our known delimiters are
            // ASCII, and so we can use single byte patterns.
            let first = Unicode.Scalar(buffer[offset])
            switch first {
            case metadata.separator:
                // Empty cell.
