Fixes for MSVC

This commit is contained in:
Sebastian Messmer 2018-07-17 21:08:17 -07:00
parent ddc95903fe
commit 1b577d000c
9 changed files with 17 additions and 12 deletions

View File

@ -24,6 +24,10 @@ if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release CACHE INTERNAL "CMAKE_BUILD_TYPE")
endif(NOT CMAKE_BUILD_TYPE)
# The MSVC version on AppVeyor CI needs this
if(MSVC)
add_definitions(/bigobj)
endif()
add_subdirectory(vendor)
add_subdirectory(src)

View File

@ -132,7 +132,7 @@ void Cache<Key, Value, MAX_ENTRIES>::_deleteOldEntriesParallel() {
template<class Key, class Value, uint32_t MAX_ENTRIES>
void Cache<Key, Value, MAX_ENTRIES>::_deleteMatchingEntriesAtBeginningParallel(std::function<bool (const CacheEntry<Key, Value> &)> matches) {
// Twice the number of cores, so we use full CPU even if half the threads are doing I/O
unsigned int numThreads = 2 * std::max(1u, std::thread::hardware_concurrency());
unsigned int numThreads = 2 * (std::max)(1u, std::thread::hardware_concurrency());
std::vector<std::future<void>> waitHandles;
for (unsigned int i = 0; i < numThreads; ++i) {
waitHandles.push_back(std::async(std::launch::async, [this, matches] {

View File

@ -57,7 +57,7 @@ namespace cpputils {
_dataAddedCv.wait(lock, [this] {
return _buffer.size() > 0;
});
size_t gettableBytes = std::min(_buffer.size(), numBytes);
size_t gettableBytes = (std::min)(_buffer.size(), numBytes);
_buffer.get(target, gettableBytes);
_dataGottenCv.notify_all();
return gettableBytes;

View File

@ -54,8 +54,8 @@ public:
using underlying_type = UnderlyingType;
using concrete_type = ConcreteType;
constexpr IdValueType(IdValueType&& rhs) noexcept(noexcept(UnderlyingType(std::move(rhs.value_)))) = default;
constexpr IdValueType(const IdValueType& rhs) noexcept(noexcept(UnderlyingType(rhs.value_))) = default;
constexpr IdValueType(IdValueType&& rhs) noexcept(noexcept(UnderlyingType(std::move(std::declval<UnderlyingType>())))) = default;
constexpr IdValueType(const IdValueType& rhs) noexcept(noexcept(UnderlyingType(std::declval<UnderlyingType>()))) = default;
constexpr IdValueType& operator=(IdValueType&& rhs) noexcept(noexcept(*std::declval<UnderlyingType*>() = std::move(rhs.value_))) {
value_ = std::move(rhs.value_);
return *this;

View File

@ -11,6 +11,7 @@ namespace bf = boost::filesystem;
using namespace cryfs::program_options;
using cryfs::CryConfigConsole;
using cryfs::CryfsException;
using cryfs::ErrorCode;
using std::pair;
using std::vector;
using std::cerr;

View File

@ -28,10 +28,10 @@ unique_ref<SymlinkBlob> SymlinkBlob::InitializeSymlink(unique_ref<Blob> blob, co
}
bf::path SymlinkBlob::_readTargetFromBlob(const FsBlobView &blob) {
char targetStr[blob.size() + 1]; // +1 because of the nullbyte
blob.read(targetStr, 0, blob.size());
auto targetStr = std::make_unique<char[]>(blob.size() + 1); // +1 because of the nullbyte
blob.read(targetStr.get(), 0, blob.size());
targetStr[blob.size()] = '\0';
return targetStr;
return targetStr.get();
}
const bf::path &SymlinkBlob::target() const {

View File

@ -235,8 +235,8 @@ bool DirEntryList::updateAccessTimestampForChild(const blockstore::BlockId &bloc
const timespec lastModificationTime = found->lastModificationTime();
const timespec now = cpputils::time::now();
const timespec yesterday {
.tv_sec = now.tv_sec - 60*60*24,
.tv_nsec = now.tv_nsec
/*.tv_sec = */ now.tv_sec - 60*60*24,
/*.tv_nsec = */ now.tv_nsec
};
bool changed = false;
if (lastAccessTime < lastModificationTime || lastAccessTime < yesterday) {

View File

@ -114,8 +114,8 @@ LocalStateMetadata LocalStateMetadata::_deserialize(istream& stream) {
string encryptionKeyDigest = pt.get<string>("encryptionKey.hash");
return LocalStateMetadata(myClientId, Hash{
.digest = cpputils::hash::Digest::FromString(encryptionKeyDigest),
.salt = cpputils::hash::Salt::FromString(encryptionKeySalt)
/*.digest = */ cpputils::hash::Digest::FromString(encryptionKeyDigest),
/*.salt = */ cpputils::hash::Salt::FromString(encryptionKeySalt)
});
}

View File

@ -2,7 +2,7 @@ set(DIR_OF_GITVERSION_TOOL "${CMAKE_CURRENT_LIST_DIR}" CACHE INTERNAL "DIR_OF_GI
function (get_git_version OUTPUT_VARIABLE)
EXECUTE_PROCESS(COMMAND python ${DIR_OF_GITVERSION_TOOL}/getversion.py
WORKING_DIRECTORY ${DIR_OF_GITVERSION_TOOL}
WORKING_DIRECTORY ${DIR_OF_GITVERSION_TOOL}
OUTPUT_VARIABLE VERSION
ERROR_VARIABLE error
RESULT_VARIABLE result)