diff options
| -rw-r--r-- | core/jni/android_tracing_PerfettoDataSource.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/core/jni/android_tracing_PerfettoDataSource.cpp b/core/jni/android_tracing_PerfettoDataSource.cpp index 8c0649b1ae0b..da690b02cdc2 100644 --- a/core/jni/android_tracing_PerfettoDataSource.cpp +++ b/core/jni/android_tracing_PerfettoDataSource.cpp @@ -201,7 +201,7 @@ void PerfettoDataSource::WritePackets(JNIEnv* env, jobjectArray packets) { for (int i = 0; i < packets_count; i++) { jbyteArray packet_proto_buffer = (jbyteArray)env->GetObjectArrayElement(packets, i); - jbyte* raw_proto_buffer = env->GetByteArrayElements(packet_proto_buffer, 0); + jbyte* raw_proto_buffer = env->GetByteArrayElements(packet_proto_buffer, nullptr); int buffer_size = env->GetArrayLength(packet_proto_buffer); struct PerfettoDsRootTracePacket trace_packet; @@ -209,6 +209,8 @@ void PerfettoDataSource::WritePackets(JNIEnv* env, jobjectArray packets) { PerfettoPbMsgAppendBytes(&trace_packet.msg.msg, (const uint8_t*)raw_proto_buffer, buffer_size); PerfettoDsTracerPacketEnd(&gIterator, &trace_packet); + + env->ReleaseByteArrayElements(packet_proto_buffer, raw_proto_buffer, 0 /* default mode */); } } |