Change the sequence between moving a struct and accessing a field inside the struct.
Accessing to a field of size_t in a move()d struct works but not so
reasonable because fields of a move()d object is considered as invalid.
Test: buffer_hub_queue-test still pass
Bug: None
Change-Id: I799ba61e6535c021b9061fa299167cba0c630cde
diff --git a/libs/vr/libbufferhubqueue/buffer_hub_queue_client.cpp b/libs/vr/libbufferhubqueue/buffer_hub_queue_client.cpp
index b8e2f9d..f7942d0 100644
--- a/libs/vr/libbufferhubqueue/buffer_hub_queue_client.cpp
+++ b/libs/vr/libbufferhubqueue/buffer_hub_queue_client.cpp
@@ -337,8 +337,6 @@
Status<void> BufferHubQueue::Enqueue(Entry entry) {
if (!is_full()) {
- available_buffers_.push(std::move(entry));
-
// Find and remove the enqueued buffer from unavailable_buffers_slot if
// exist.
auto enqueued_buffer_iter = std::find_if(
@@ -348,6 +346,8 @@
unavailable_buffers_slot_.erase(enqueued_buffer_iter);
}
+ available_buffers_.push(std::move(entry));
+
// Trigger OnBufferAvailable callback if registered.
if (on_buffer_available_)
on_buffer_available_();