kmarshall added a comment. Also, it looks like some instances of safe unique_ptr assignment using std::move() are tripping up the analyzer.
Error: ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/unique_ptr.h:190:4: warning: Potential memory leak **C++ library code:** template<typename _Up, typename _Ep, typename = typename std::enable_if <std::is_convertible<typename unique_ptr<_Up, _Ep>::pointer, pointer>::value && !std::is_array<_Up>::value>::type> unique_ptr& operator=(unique_ptr<_Up, _Ep>&& __u) { reset(__u.release()); get_deleter() = std::forward<_Ep>(__u.get_deleter()); return *this; // <------------------ GENERATES WARNING } **Call site:** case Message::STRUCT: { MessageReader sub_reader(NULL); if (reader->PopStruct(&sub_reader)) { std::unique_ptr<base::ListValue> list_value(new base::ListValue); if (PopListElements(&sub_reader, list_value.get())) result = std::move(list_value); // <-- GENERATES WARNING. |result| is a std::unique_ptr<base::Value>, so the std::move should be safe. } break; } **Analysis trace:** In file included from ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/memory:85: ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/unique_ptr.h:190:4: warning: Potential memory leak return *this; ^ ../../dbus/values_util.cc:94:3: note: Control jumps to 'case STRUCT:' at line 197 switch (reader->GetDataType()) { ^ ../../dbus/values_util.cc:199:11: note: Assuming the condition is true if (reader->PopStruct(&sub_reader)) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../dbus/values_util.cc:199:7: note: Taking true branch if (reader->PopStruct(&sub_reader)) { ^ ../../dbus/values_util.cc:200:53: note: Memory is allocated std::unique_ptr<base::ListValue> list_value(new base::ListValue); ^~~~~~~~~~~~~~~~~~~ ../../dbus/values_util.cc:201:9: note: Taking true branch if (PopListElements(&sub_reader, list_value.get())) ^ ../../dbus/values_util.cc:202:11: note: Calling 'unique_ptr::operator=' result = std::move(list_value); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/unique_ptr.h:190:4: note: Potential memory leak return *this; ^ Repository: rL LLVM https://reviews.llvm.org/D30593 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits