Transcoder: Fix crash in PassthroughTrackTranscoder

Bug: 160916699
Test: PassthroughTrackTranscoder unit tests running with address sanitizer
Change-Id: I2522f1eb2d5ed34ca3e6b43a81692334a82cea20
diff --git a/media/libmediatranscoding/transcoder/PassthroughTrackTranscoder.cpp b/media/libmediatranscoding/transcoder/PassthroughTrackTranscoder.cpp
index a4cbf33..e2cc6b6 100644
--- a/media/libmediatranscoding/transcoder/PassthroughTrackTranscoder.cpp
+++ b/media/libmediatranscoding/transcoder/PassthroughTrackTranscoder.cpp
@@ -44,8 +44,17 @@
     // Check if the free list contains a large enough buffer.
     auto it = mFreeBufferMap.lower_bound(minimumBufferSize);
     if (it != mFreeBufferMap.end()) {
+        uint8_t* buffer = it->second;
         mFreeBufferMap.erase(it);
-        return it->second;
+        return buffer;
+    }
+
+    // If the maximum buffer count is reached, remove an existing free buffer.
+    if (mAddressSizeMap.size() >= mMaxBufferCount) {
+        auto it = mFreeBufferMap.begin();
+        mAddressSizeMap.erase(it->second);
+        delete[] it->second;
+        mFreeBufferMap.erase(it);
     }
 
     // Allocate a new buffer.
@@ -55,14 +64,6 @@
         return nullptr;
     }
 
-    // If the maximum buffer count is reached, remove an existing free buffer.
-    if (mAddressSizeMap.size() >= mMaxBufferCount) {
-        auto it = mFreeBufferMap.begin();
-        mFreeBufferMap.erase(it);
-        mAddressSizeMap.erase(it->second);
-        delete[] it->second;
-    }
-
     // Add the buffer to the tracking set.
     mAddressSizeMap.emplace(buffer, minimumBufferSize);
     return buffer;