diff --git a/Cache/BlockCache.cpp b/Cache/BlockCache.cpp index 61462ed..3c24d2a 100644 --- a/Cache/BlockCache.cpp +++ b/Cache/BlockCache.cpp @@ -51,7 +51,8 @@ void BlockCache::read(unsigned block, void *bp) BlockCachePointer BlockCache::Create(BlockDevicePointer device) { - if (!device.get()) return BlockCachePointer(); + // this just calls the device virtual function to create a cache. + if (!device) return BlockCachePointer(); return device->createBlockCache(); } diff --git a/Cache/ConcreteBlockCache.cpp b/Cache/ConcreteBlockCache.cpp index 5bf7ede..ef8c6b1 100644 --- a/Cache/ConcreteBlockCache.cpp +++ b/Cache/ConcreteBlockCache.cpp @@ -60,7 +60,10 @@ using ProFUSE::POSIXException; BlockCachePointer ConcreteBlockCache::Create(BlockDevicePointer device, unsigned size) { - return BlockCachePointer(new ConcreteBlockCache(device, size)); + //return BlockCachePointer(new ConcreteBlockCache(device, size)); + // constructor must be accessible to std::make_shared... + + return MAKE_SHARED(ConcreteBlockCache, device, size); } ConcreteBlockCache::ConcreteBlockCache(BlockDevicePointer device, unsigned size) : diff --git a/Cache/MappedBlockCache.cpp b/Cache/MappedBlockCache.cpp index 4a65fb1..bf0892b 100644 --- a/Cache/MappedBlockCache.cpp +++ b/Cache/MappedBlockCache.cpp @@ -21,7 +21,8 @@ using ProFUSE::POSIXException; BlockCachePointer MappedBlockCache::Create(BlockDevicePointer device, void *data) { - return BlockCachePointer(new MappedBlockCache(device, data)); + //return BlockCachePointer(new MappedBlockCache(device, data)); + return MAKE_SHARED(MappedBlockCache, device, data); }