Skip to content

Commit 15ace29

Browse files
committed
Fix posix_madvise on FreeBSD returning error if size=0 (See #460)
1 parent 139e450 commit 15ace29

File tree

4 files changed

+4
-4
lines changed

4 files changed

+4
-4
lines changed

src/commons/DBReader.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1000,7 +1000,7 @@ void DBReader<T>::setSequentialAdvice() {
10001000
#ifdef HAVE_POSIX_MADVISE
10011001
for(size_t i = 0; i < dataFileCnt; i++){
10021002
size_t dataSize = dataSizeOffset[i+1] - dataSizeOffset[i];
1003-
if (posix_madvise (dataFiles[i], dataSize, POSIX_MADV_SEQUENTIAL) != 0){
1003+
if (dataSize > 0 && posix_madvise (dataFiles[i], dataSize, POSIX_MADV_SEQUENTIAL) != 0){
10041004
Debug(Debug::ERROR) << "posix_madvise returned an error " << dataFileName << "\n";
10051005
}
10061006
}

src/commons/Util.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -389,7 +389,7 @@ uint64_t Util::getL2CacheSize() {
389389

390390
char Util::touchMemory(const char *memory, size_t size) {
391391
#ifdef HAVE_POSIX_MADVISE
392-
if (posix_madvise ((void*)memory, size, POSIX_MADV_WILLNEED) != 0){
392+
if (size > 0 && posix_madvise ((void*)memory, size, POSIX_MADV_WILLNEED) != 0){
393393
Debug(Debug::ERROR) << "posix_madvise returned an error (touchMemory)\n";
394394
}
395395
#endif

src/linclust/KmerIndex.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ class KmerIndex{
183183
this->indexGridSize = MathUtil::ceilIntDivision( MathUtil::ipow<size_t>(alphabetSize, kmerSize), gridResolution );
184184
this->entryOffsets = (size_t *) entriesOffetData;
185185
#if HAVE_POSIX_MADVISE
186-
if (posix_madvise (entriesData, entryCount* sizeof(KmerEntryRelative), POSIX_MADV_SEQUENTIAL) != 0){
186+
if (entryCount > 0 && posix_madvise (entriesData, entryCount* sizeof(KmerEntryRelative), POSIX_MADV_SEQUENTIAL) != 0){
187187
Debug(Debug::ERROR) << "KmerIndex posix_madvise returned an error\n";
188188
}
189189
#endif

src/prefiltering/Prefiltering.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -406,7 +406,7 @@ void Prefiltering::mergeTargetSplits(const std::string &outDB, const std::string
406406
files[i] = FileUtil::openFileOrDie(fileNames[i].first.c_str(), "r", true);
407407
dataFile[i] = static_cast<char*>(FileUtil::mmapFile(files[i], &dataFileSize[i]));
408408
#ifdef HAVE_POSIX_MADVISE
409-
if (posix_madvise (dataFile[i], dataFileSize[i], POSIX_MADV_SEQUENTIAL) != 0){
409+
if (dataFileSize[i] > 0 && posix_madvise (dataFile[i], dataFileSize[i], POSIX_MADV_SEQUENTIAL) != 0){
410410
Debug(Debug::ERROR) << "posix_madvise returned an error " << fileNames[i].first << "\n";
411411
}
412412
#endif

0 commit comments

Comments
 (0)