File tree 1 file changed +6
-3
lines changed
libraries/FastScheduler/src/circular_queue
1 file changed +6
-3
lines changed Original file line number Diff line number Diff line change @@ -186,6 +186,7 @@ class circular_queue
186
186
187
187
/* !
188
188
@brief Pop multiple elements in ordered sequence from the queue to a buffer.
189
+ If buffer is nullptr, simply discards up to size elements from the queue.
189
190
@return The number of elements actually popped from the queue to
190
191
buffer.
191
192
*/
@@ -313,9 +314,11 @@ size_t circular_queue<T>::pop_n(T* buffer, size_t size) {
313
314
314
315
std::atomic_thread_fence (std::memory_order_acquire);
315
316
316
- buffer = std::copy_n (std::make_move_iterator (m_buffer.get () + outPos), n, buffer);
317
- avail -= n;
318
- std::copy_n (std::make_move_iterator (m_buffer.get ()), avail, buffer);
317
+ if (buffer) {
318
+ buffer = std::copy_n (std::make_move_iterator (m_buffer.get () + outPos), n, buffer);
319
+ avail -= n;
320
+ std::copy_n (std::make_move_iterator (m_buffer.get ()), avail, buffer);
321
+ }
319
322
320
323
std::atomic_thread_fence (std::memory_order_release);
321
324
You can’t perform that action at this time.
0 commit comments