diff options
author | Lalit Maganti <lalitm@google.com> | 2024-04-09 16:17:54 +0100 |
---|---|---|
committer | Lalit Maganti <lalitm@google.com> | 2024-04-09 16:17:54 +0100 |
commit | 84065a134910ec8b007c6cc23da63747ed6b310d (patch) | |
tree | 681529b49fa7500fd733a556e54e99bf0b0b57e5 | |
parent | 1fee977d12069ddc3e71886b089cf45d20c79218 (diff) | |
download | perfetto-84065a134910ec8b007c6cc23da63747ed6b310d.tar.gz |
tp: fix invalid use and memory leak
The vtab needs to be last thing that's released as SQLite won't free it
unless we return OK. Also we were accidentally using after we'd moved
from the pointer.
Change-Id: I18bfa7e41ba173ea2c486aa3d9abf127aaeb1b76
-rw-r--r-- | src/trace_processor/perfetto_sql/intrinsics/operators/span_join_operator.cc | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/trace_processor/perfetto_sql/intrinsics/operators/span_join_operator.cc b/src/trace_processor/perfetto_sql/intrinsics/operators/span_join_operator.cc index ce41792c5..49ad2891f 100644 --- a/src/trace_processor/perfetto_sql/intrinsics/operators/span_join_operator.cc +++ b/src/trace_processor/perfetto_sql/intrinsics/operators/span_join_operator.cc @@ -755,7 +755,6 @@ int SpanJoinOperatorModule::Connect(sqlite3* db, auto* context = GetContext(ctx); std::unique_ptr<Vtab> res = std::make_unique<Vtab>(); res->state = context->manager.OnConnect(argv); - *vtab = res.release(); auto* state = sqlite::ModuleStateManager<SpanJoinOperatorModule>::GetState(res->state); @@ -763,6 +762,7 @@ int SpanJoinOperatorModule::Connect(sqlite3* db, ret != SQLITE_OK) { return ret; } + *vtab = res.release(); return SQLITE_OK; } |