aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLalit Maganti <lalitm@google.com>2024-04-09 16:17:54 +0100
committerLalit Maganti <lalitm@google.com>2024-04-09 16:17:54 +0100
commit84065a134910ec8b007c6cc23da63747ed6b310d (patch)
tree681529b49fa7500fd733a556e54e99bf0b0b57e5
parent1fee977d12069ddc3e71886b089cf45d20c79218 (diff)
downloadperfetto-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.cc2
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;
}