Fix a segfault in fbson under Mac OS X compiler
Summary: The problem appears to be caused by a bug in Mac OS X compiler (http://llvm.org/bugs/show_bug.cgi?id=15337). We need explicitly construct the base object std::ostream(std::streambuf*) with nullptr. Otherwise, ostream will try to delete the underlying streambuf* which apparently is undefined in the Mac OS X compiler. https://github.com/facebook/rocksdb/issues/525 Test Plan: unit test in fbson make all check document_db_test (on mac) Reviewers: IslamAbdelRahman, igor Reviewed By: igor Subscribers: dhruba Differential Revision: https://reviews.facebook.net/D34587
This commit is contained in:
parent
694988b627
commit
492f6d27ed
12
third-party/fbson/FbsonStream.h
vendored
12
third-party/fbson/FbsonStream.h
vendored
@ -62,7 +62,11 @@ class FbsonInBuffer : public std::streambuf {
|
||||
class FbsonOutStream : public std::ostream {
|
||||
public:
|
||||
explicit FbsonOutStream(uint32_t capacity = 1024)
|
||||
: head_(nullptr), size_(0), capacity_(capacity), alloc_(true) {
|
||||
: std::ostream(nullptr),
|
||||
head_(nullptr),
|
||||
size_(0),
|
||||
capacity_(capacity),
|
||||
alloc_(true) {
|
||||
if (capacity_ == 0) {
|
||||
capacity_ = 1024;
|
||||
}
|
||||
@ -71,7 +75,11 @@ class FbsonOutStream : public std::ostream {
|
||||
}
|
||||
|
||||
FbsonOutStream(char* buffer, uint32_t capacity)
|
||||
: head_(buffer), size_(0), capacity_(capacity), alloc_(false) {
|
||||
: std::ostream(nullptr),
|
||||
head_(buffer),
|
||||
size_(0),
|
||||
capacity_(capacity),
|
||||
alloc_(false) {
|
||||
assert(buffer && capacity_ > 0);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user