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(); FsSize_t size();
void setId(InodeId_t); void setId(InodeId_t);
void setData(void *data, int size); void setData(void *data, FsSize_t size);
void *data(); void *data();
private: private:
@@ -203,7 +203,7 @@ void FileStore<FsSize_t>::Inode::setId(InodeId_t id) {
} }
template<typename FsSize_t> 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); ox::std::memcpy(this->data(), data, size);
dataLen = size; dataLen = size;
} }
+13 -7
View File
@@ -127,50 +127,56 @@ FileStat FileSystemTemplate<FileStore>::stat(const char *path) {
return stat; return stat;
} }
#pragma warning(disable:4244)
template<typename FileStore> template<typename FileStore>
FileStat FileSystemTemplate<FileStore>::stat(ox::std::uint64_t inode) { FileStat FileSystemTemplate<FileStore>::stat(ox::std::uint64_t inode) {
FileStat stat; FileStat stat;
auto s = store->stat(inode); auto s = store->stat((FileStore::FsSize_t) inode);
stat.size = s.size; stat.size = s.size;
stat.inode = s.inodeId; stat.inode = s.inodeId;
stat.fileType = s.fileType; stat.fileType = s.fileType;
return stat; return stat;
} }
#pragma warning(disable:4244)
template<typename FileStore> template<typename FileStore>
int FileSystemTemplate<FileStore>::read(ox::std::uint64_t inode, void *buffer, ox::std::uint64_t size) { int FileSystemTemplate<FileStore>::read(ox::std::uint64_t inode, void *buffer, ox::std::uint64_t size) {
auto err = 1; auto err = 1;
auto s = store->stat(inode); auto s = store->stat((FileStore::FsSize_t) inode);
if (size == s.size) { if (size == s.size) {
err = store->read(inode, buffer, nullptr); err = store->read((FileStore::FsSize_t) inode, buffer, nullptr);
} }
return err; return err;
} }
#pragma warning(disable:4244)
template<typename FileStore> template<typename FileStore>
ox::std::uint8_t *FileSystemTemplate<FileStore>::read(ox::std::uint64_t inode, ox::std::uint64_t *size) { 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]; auto buff = new ox::std::uint8_t[s.size];
if (size) { if (size) {
*size = s.size; *size = s.size;
} }
if (store->read(inode, buff, nullptr)) { if (store->read((FileStore::FsSize_t) inode, buff, nullptr)) {
delete []buff; delete []buff;
buff = nullptr; buff = nullptr;
} }
return buff; return buff;
} }
#pragma warning(disable:4244)
template<typename FileStore> template<typename FileStore>
int FileSystemTemplate<FileStore>::remove(ox::std::uint64_t inode) { 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> template<typename FileStore>
int FileSystemTemplate<FileStore>::write(ox::std::uint64_t inode, void *buffer, ox::std::uint64_t size, ox::std::uint8_t fileType) { 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> template<typename FileStore>
ox::std::uint8_t *FileSystemTemplate<FileStore>::format(void *buffer, typename FileStore::FsSize_t size, bool useDirectories) { 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); 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) { ox::std::uint64_t bytes(const char *str) {
const auto size = ::strlen(str); auto size = ::strlen(str);
const auto lastChar = str[size-1]; const auto lastChar = str[size-1];
auto multiplier = 1; auto multiplier = 1;
char copy[size]; auto copy = new char[size];
memcpy(copy, str, size); memcpy(copy, str, size);
if (lastChar < '0' || lastChar > '9') { if (lastChar < '0' || lastChar > '9') {
copy[size-1] = 0; copy[size-1] = 0;
@@ -64,7 +64,9 @@ ox::std::uint64_t bytes(const char *str) {
multiplier = -1; 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) { int format(int argc, char **args) {
@@ -81,17 +83,17 @@ int format(int argc, char **args) {
if (size < sizeof(FileStore64)) { if (size < sizeof(FileStore64)) {
err = 1; 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) { if (!err) {
// format // format
switch (type) { switch (type) {
case 16: case 16:
FileStore16::format(buff, size, ox::fs::OxFS_16); FileStore16::format(buff, (FileStore16::FsSize_t) size, ox::fs::OxFS_16);
break; break;
case 32: case 32:
FileStore32::format(buff, size, ox::fs::OxFS_32); FileStore32::format(buff, (FileStore32::FsSize_t) size, ox::fs::OxFS_32);
break; break;
case 64: case 64:
FileStore64::format(buff, size, ox::fs::OxFS_64); FileStore64::format(buff, size, ox::fs::OxFS_64);