[LockConsistency] Adding ownership of locals for c-style functions

Summary: Functions that do not belong to a class or a struct are translated to c-style functions even in the context of cpp. We need to add ownership to locals for c-style functions too.

Reviewed By: sblackshear

Differential Revision: D6196882

fbshipit-source-id: 715f129
master
Daiva Naudziuniene 7 years ago committed by Facebook Github Bot
parent 259beab26a
commit ccd2c76344

@ -1123,7 +1123,7 @@ let analyze_procedure {Callbacks.proc_desc; get_proc_desc; tenv; summary} =
variables cannot be raced on as every thread has its own stack. *)
let own_locals_in_cpp =
match Procdesc.get_proc_name proc_desc with
| ObjC_Cpp _ ->
| ObjC_Cpp _ | C _ ->
List.fold ~f:add_owned_local (Procdesc.get_locals proc_desc)
~init:OwnershipDomain.empty
| _ ->
@ -1917,4 +1917,3 @@ let file_analysis {Callbacks.procedures} =
else (module MayAliasQuotientedAccessListMap) )
class_env))
(aggregate_by_class procedures)

@ -0,0 +1,29 @@
/*
* Copyright (c) 2017 - 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.
*/
#include <mutex>
namespace locals_char_array {
void f() {
char line[1024];
line[0] = line[1];
}
struct A {
void not_locked() { f(); }
bool locked() {
mutex_.lock();
f();
}
std::mutex mutex_;
};
} // namespace locals_char_array
Loading…
Cancel
Save