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.

53 lines
873 B

/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
struct S {
int field;
};
void ref_set_to_zero(int& x) { x = 0; }
void struct_ref_set_to_zero(struct S& s) { s.field = 0; }
void call_by_ref_good() {
int arr[10];
int i = 99;
ref_set_to_zero(i);
arr[i] = 123;
}
void call_by_ref_bad() {
int arr[10];
int i = 5;
ref_set_to_zero(i);
arr[i - 1] = 123;
}
struct S init_S(int x) {
struct S s = {x};
return s;
}
int loop_with_init_S(int length) {
int i = 0;
while (i < length) {
struct S s = init_S(i + 1);
i = s.field;
}
return i;
}
void call_loop_with_init_S_Good() {
int a[10];
a[loop_with_init_S(5)] = 0;
}
void call_loop_with_init_S_Bad() {
int a[10];
a[loop_with_init_S(10)] = 0;
}