mirror of
https://github.com/fish-shell/fish-shell
synced 2025-01-28 04:35:09 +00:00
Make profile_items use unique_ptr instead of raw pointers
This commit is contained in:
parent
9efa897d0d
commit
16bc7b48b5
2 changed files with 11 additions and 8 deletions
|
@ -234,20 +234,20 @@ void parser_t::forbid_function(const wcstring &function) { forbidden_function.pu
|
||||||
void parser_t::allow_function() { forbidden_function.pop_back(); }
|
void parser_t::allow_function() { forbidden_function.pop_back(); }
|
||||||
|
|
||||||
/// Print profiling information to the specified stream.
|
/// Print profiling information to the specified stream.
|
||||||
static void print_profile(const std::vector<profile_item_t *> &items, FILE *out) {
|
static void print_profile(const std::vector<std::unique_ptr<profile_item_t>> &items, FILE *out) {
|
||||||
for (size_t pos = 0; pos < items.size(); pos++) {
|
for (size_t pos = 0; pos < items.size(); pos++) {
|
||||||
const profile_item_t *me, *prev;
|
const profile_item_t *me, *prev;
|
||||||
size_t i;
|
size_t i;
|
||||||
int my_time;
|
int my_time;
|
||||||
|
|
||||||
me = items.at(pos);
|
me = items.at(pos).get();
|
||||||
if (me->skipped) {
|
if (me->skipped) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
my_time = me->parse + me->exec;
|
my_time = me->parse + me->exec;
|
||||||
for (i = pos + 1; i < items.size(); i++) {
|
for (i = pos + 1; i < items.size(); i++) {
|
||||||
prev = items.at(i);
|
prev = items.at(i).get();
|
||||||
if (prev->skipped) {
|
if (prev->skipped) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -569,10 +569,10 @@ job_t *parser_t::job_get_from_pid(int pid) {
|
||||||
}
|
}
|
||||||
|
|
||||||
profile_item_t *parser_t::create_profile_item() {
|
profile_item_t *parser_t::create_profile_item() {
|
||||||
profile_item_t *result = NULL;
|
profile_item_t *result = nullptr;
|
||||||
if (g_profiling_active) {
|
if (g_profiling_active) {
|
||||||
result = new profile_item_t();
|
profile_items.emplace_back(new profile_item_t());
|
||||||
profile_items.push_back(result);
|
result = profile_items.back().get();
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
|
@ -196,8 +196,11 @@ class parser_t {
|
||||||
wcstring block_stack_description() const;
|
wcstring block_stack_description() const;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/// List of profile items, allocated with new.
|
/// List of profile items
|
||||||
std::vector<profile_item_t *> profile_items;
|
/// These are pointers because we return pointers to them to callers,
|
||||||
|
/// who may hold them across blocks (which would cause reallocations internal
|
||||||
|
/// to profile_items)
|
||||||
|
std::vector<std::unique_ptr<profile_item_t>> profile_items;
|
||||||
|
|
||||||
// No copying allowed.
|
// No copying allowed.
|
||||||
parser_t(const parser_t &);
|
parser_t(const parser_t &);
|
||||||
|
|
Loading…
Reference in a new issue