Suppress some compiler false positive warnings that come up in Visual C++

This commit is contained in:
2016-09-07 20:13:46 -05:00
parent 4ad67ed310
commit 2dd8958d9f
3 changed files with 23 additions and 15 deletions
+2 -2
View File
@@ -37,7 +37,7 @@ class FileStore {
FsSize_t size();
void setId(InodeId_t);
void setData(void *data, int size);
void setData(void *data, FsSize_t size);
void *data();
private:
@@ -203,7 +203,7 @@ void FileStore<FsSize_t>::Inode::setId(InodeId_t id) {
}
template<typename FsSize_t>
void FileStore<FsSize_t>::Inode::setData(void *data, int size) {
void FileStore<FsSize_t>::Inode::setData(void *data, FsSize_t size) {
ox::std::memcpy(this->data(), data, size);
dataLen = size;
}
+13 -7
View File
@@ -127,50 +127,56 @@ FileStat FileSystemTemplate<FileStore>::stat(const char *path) {
return stat;
}
#pragma warning(disable:4244)
template<typename FileStore>
FileStat FileSystemTemplate<FileStore>::stat(ox::std::uint64_t inode) {
FileStat stat;
auto s = store->stat(inode);
auto s = store->stat((FileStore::FsSize_t) inode);
stat.size = s.size;
stat.inode = s.inodeId;
stat.fileType = s.fileType;
return stat;
}
#pragma warning(disable:4244)
template<typename FileStore>
int FileSystemTemplate<FileStore>::read(ox::std::uint64_t inode, void *buffer, ox::std::uint64_t size) {
auto err = 1;
auto s = store->stat(inode);
auto s = store->stat((FileStore::FsSize_t) inode);
if (size == s.size) {
err = store->read(inode, buffer, nullptr);
err = store->read((FileStore::FsSize_t) inode, buffer, nullptr);
}
return err;
}
#pragma warning(disable:4244)
template<typename FileStore>
ox::std::uint8_t *FileSystemTemplate<FileStore>::read(ox::std::uint64_t inode, ox::std::uint64_t *size) {
auto s = store->stat(inode);
auto s = store->stat((FileStore::FsSize_t) inode);
auto buff = new ox::std::uint8_t[s.size];
if (size) {
*size = s.size;
}
if (store->read(inode, buff, nullptr)) {
if (store->read((FileStore::FsSize_t) inode, buff, nullptr)) {
delete []buff;
buff = nullptr;
}
return buff;
}
#pragma warning(disable:4244)
template<typename FileStore>
int FileSystemTemplate<FileStore>::remove(ox::std::uint64_t inode) {
return store->remove(inode);
return store->remove((FileStore::FsSize_t) inode);
}
#pragma warning(disable:4244)
template<typename FileStore>
int FileSystemTemplate<FileStore>::write(ox::std::uint64_t inode, void *buffer, ox::std::uint64_t size, ox::std::uint8_t fileType) {
return store->write(inode, buffer, size, fileType);
return store->write((FileStore::FsSize_t) inode, buffer, (FileStore::FsSize_t) size, fileType);
}
#pragma warning(disable:4244)
template<typename FileStore>
ox::std::uint8_t *FileSystemTemplate<FileStore>::format(void *buffer, typename FileStore::FsSize_t size, bool useDirectories) {
buffer = FileStore::format((ox::std::uint8_t*) buffer, size, FS_TYPE);
+8 -6
View File
@@ -40,10 +40,10 @@ char *loadFileBuff(const char *path, ::size_t *sizeOut = nullptr) {
}
ox::std::uint64_t bytes(const char *str) {
const auto size = ::strlen(str);
auto size = ::strlen(str);
const auto lastChar = str[size-1];
auto multiplier = 1;
char copy[size];
auto copy = new char[size];
memcpy(copy, str, size);
if (lastChar < '0' || lastChar > '9') {
copy[size-1] = 0;
@@ -64,7 +64,9 @@ ox::std::uint64_t bytes(const char *str) {
multiplier = -1;
}
}
return ((ox::std::uint64_t) ::atoi(copy)) * multiplier;
const auto retval = ((ox::std::uint64_t) ::atoi(copy)) * multiplier;
delete copy;
return retval;
}
int format(int argc, char **args) {
@@ -81,17 +83,17 @@ int format(int argc, char **args) {
if (size < sizeof(FileStore64)) {
err = 1;
fprintf(stderr, "File system size %llu too small, must be at least %lu\n", size, sizeof(FileStore64));
fprintf(stderr, "File system size %llu too small, must be at least %llu\n", (ox::std::uint64_t) size, (ox::std::uint64_t) sizeof(FileStore64));
}
if (!err) {
// format
switch (type) {
case 16:
FileStore16::format(buff, size, ox::fs::OxFS_16);
FileStore16::format(buff, (FileStore16::FsSize_t) size, ox::fs::OxFS_16);
break;
case 32:
FileStore32::format(buff, size, ox::fs::OxFS_32);
FileStore32::format(buff, (FileStore32::FsSize_t) size, ox::fs::OxFS_32);
break;
case 64:
FileStore64::format(buff, size, ox::fs::OxFS_64);