@@ -274,39 +274,35 @@ final class RDKafkaClient: Sendable {
274
274
cHeaders: inout [ ( key: UnsafePointer < CChar > , value: UnsafeRawBufferPointer ? ) ] ,
275
275
_ body: ( [ ( key: UnsafePointer < CChar > , value: UnsafeRawBufferPointer ? ) ] ) throws -> T
276
276
) rethrows -> T {
277
- if kafkaHeaders. isEmpty {
277
+ guard let kafkaHeader = kafkaHeaders. popLast ( ) else {
278
278
// Base case: we have read all kafkaHeaders and now invoke the accessor closure
279
279
// that can safely access the pointers in cHeaders
280
280
return try body ( cHeaders)
281
- } else {
282
- guard let kafkaHeader = kafkaHeaders. popLast ( ) else {
283
- fatalError ( " kafkaHeaders should not be nil " )
284
- }
281
+ }
285
282
286
- // Access underlying memory of key and value with scoped accessor and to a
287
- // recursive call to _withKafkaCHeadersRecursive in the scoped accessor.
288
- // This allows us to build a chain of scoped accessors so that the body closure
289
- // can ultimately access all kafkaHeader underlying key/value bytes safely.
290
- return try kafkaHeader. key. withCString { keyCString in
291
- if let headerValue = kafkaHeader. value {
292
- return try headerValue. withUnsafeReadableBytes { valueBuffer in
293
- let cHeader : ( UnsafePointer < CChar > , UnsafeRawBufferPointer ? ) = ( keyCString, valueBuffer)
294
- cHeaders. append ( cHeader)
295
- return try self . _withKafkaCHeadersRecursive (
296
- kafkaHeaders: & kafkaHeaders,
297
- cHeaders: & cHeaders,
298
- body
299
- )
300
- }
301
- } else {
302
- let cHeader : ( UnsafePointer < CChar > , UnsafeRawBufferPointer ? ) = ( keyCString, nil )
283
+ // Access underlying memory of key and value with scoped accessor and to a
284
+ // recursive call to _withKafkaCHeadersRecursive in the scoped accessor.
285
+ // This allows us to build a chain of scoped accessors so that the body closure
286
+ // can ultimately access all kafkaHeader underlying key/value bytes safely.
287
+ return try kafkaHeader. key. withCString { keyCString in
288
+ if let headerValue = kafkaHeader. value {
289
+ return try headerValue. withUnsafeReadableBytes { valueBuffer in
290
+ let cHeader : ( UnsafePointer < CChar > , UnsafeRawBufferPointer ? ) = ( keyCString, valueBuffer)
303
291
cHeaders. append ( cHeader)
304
292
return try self . _withKafkaCHeadersRecursive (
305
293
kafkaHeaders: & kafkaHeaders,
306
294
cHeaders: & cHeaders,
307
295
body
308
296
)
309
297
}
298
+ } else {
299
+ let cHeader : ( UnsafePointer < CChar > , UnsafeRawBufferPointer ? ) = ( keyCString, nil )
300
+ cHeaders. append ( cHeader)
301
+ return try self . _withKafkaCHeadersRecursive (
302
+ kafkaHeaders: & kafkaHeaders,
303
+ cHeaders: & cHeaders,
304
+ body
305
+ )
310
306
}
311
307
}
312
308
}
0 commit comments