You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1008 B
46 lines
1008 B
/*
|
|
* Copyright (c) 2018 - present Facebook, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under the BSD style license found in the
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
*/
|
|
|
|
struct Aggregate {
|
|
int i;
|
|
|
|
~Aggregate() {}
|
|
};
|
|
|
|
void aggregate_reassign_ok() {
|
|
const int len = 5;
|
|
Aggregate arr[len];
|
|
for (int i = 0; i < len; i++) {
|
|
Aggregate s = {1};
|
|
// assign with curly bracket syntax doesn't call constructor; need to
|
|
// recognize that this is a reassignment anyway
|
|
arr[0] = s; // shouldn't be flagged as a use-after-lifetime
|
|
}
|
|
}
|
|
|
|
int multiple_invalidations_branch_bad(int n, int* ptr) {
|
|
if (n == 7) {
|
|
delete ptr;
|
|
} else {
|
|
delete ptr;
|
|
}
|
|
return *ptr;
|
|
}
|
|
|
|
int multiple_invalidations_loop_bad(int n, int* ptr) {
|
|
for (int i = 0; i < n; i++) {
|
|
if (i == 7) {
|
|
delete ptr;
|
|
} else {
|
|
delete ptr;
|
|
}
|
|
}
|
|
return *ptr;
|
|
}
|