projects
/
folly.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
7de5a99
)
Fix issue where compiler cannot determine address of ::free at compile time
author
Cameron Pickett
<pickett@fb.com>
Fri, 21 Apr 2017 01:33:05 +0000
(18:33 -0700)
committer
Facebook Github Bot
<facebook-github-bot@users.noreply.github.com>
Fri, 21 Apr 2017 01:35:06 +0000
(18:35 -0700)
Reviewed By: Orvid
Differential Revision:
D4921738
fbshipit-source-id:
69848cda3638fca4ead73dcc9949af0f600f33bb
folly/Memory.h
patch
|
blob
|
history
diff --git
a/folly/Memory.h
b/folly/Memory.h
index d24422190250cf4bdf7c05426a185f9d159ca4e5..272d64dc68da5b6e997f6acb49e92be5d0d0a4b2 100644
(file)
--- a/
folly/Memory.h
+++ b/
folly/Memory.h
@@
-137,7
+137,18
@@
std::weak_ptr<T> to_weak_ptr(const std::shared_ptr<T>& ptr) {
return std::weak_ptr<T>(ptr);
}
return std::weak_ptr<T>(ptr);
}
-using SysBufferDeleter = static_function_deleter<void, ::free>;
+namespace detail {
+/**
+ * Not all STL implementations define ::free in a way that its address can be
+ * determined at compile time. So we must wrap ::free in a function whose
+ * address can be determined.
+ */
+inline void SysFree(void* p) {
+ ::free(p);
+}
+}
+
+using SysBufferDeleter = static_function_deleter<void, &detail::SysFree>;
using SysBufferUniquePtr = std::unique_ptr<void, SysBufferDeleter>;
inline SysBufferUniquePtr allocate_sys_buffer(size_t size) {
return SysBufferUniquePtr(::malloc(size));
using SysBufferUniquePtr = std::unique_ptr<void, SysBufferDeleter>;
inline SysBufferUniquePtr allocate_sys_buffer(size_t size) {
return SysBufferUniquePtr(::malloc(size));