diff --git a/src/commons/DBWriter.cpp b/src/commons/DBWriter.cpp index 9ae84bae1..eae05b717 100644 --- a/src/commons/DBWriter.cpp +++ b/src/commons/DBWriter.cpp @@ -678,7 +678,7 @@ void DBWriter::writeThreadBuffer(unsigned int idx, size_t dataSize) { } } -void DBWriter::createRenumberedDB(const std::string& dataFile, const std::string& indexFile, const std::string& origData, const std::string& origIndex, int sortMode) { +void DBWriter::createRenumberedDB(const std::string& dataFile, const std::string& indexFile, const std::string& origData, const std::string& origIndex, bool keepEntryName, int sortMode) { DBReader* lookupReader = NULL; FILE *sLookup = NULL; if (origData.empty() == false && origIndex.empty() == false) { @@ -711,7 +711,9 @@ void DBWriter::createRenumberedDB(const std::string& dataFile, const std::string size_t lookupId = lookupReader->getLookupIdByKey(idx->id); DBReader::LookupEntry copy = lookup[lookupId]; copy.id = i; - copy.entryName = SSTR(idx->id); + if(!keepEntryName){ + copy.entryName = SSTR(idx->id); + } lookupReader->lookupEntryToBuffer(strBuffer, copy); written = fwrite(strBuffer.c_str(), sizeof(char), strBuffer.size(), sLookup); if (written != (int) strBuffer.size()) { diff --git a/src/commons/DBWriter.h b/src/commons/DBWriter.h index 190015cb3..3fd811b4a 100644 --- a/src/commons/DBWriter.h +++ b/src/commons/DBWriter.h @@ -59,7 +59,7 @@ class DBWriter : public MemoryTracker { template static void writeIndexEntryToFile(FILE *outFile, char *buff1, T &index); - static void createRenumberedDB(const std::string& dataFile, const std::string& indexFile, const std::string& origData, const std::string& origIndex, int sortMode = DBReader::SORT_BY_ID_OFFSET); + static void createRenumberedDB(const std::string& dataFile, const std::string& indexFile, const std::string& origData, const std::string& origIndex, bool keepEntryName = false, int sortMode = DBReader::SORT_BY_ID_OFFSET); bool isClosed(){ return closed; diff --git a/src/util/convertalignments.cpp b/src/util/convertalignments.cpp index 79e38e04d..f0d889309 100644 --- a/src/util/convertalignments.cpp +++ b/src/util/convertalignments.cpp @@ -102,8 +102,9 @@ std::map readKeyToSet(const std::string& file) { MemoryMapped lookup(file, MemoryMapped::WholeFile, MemoryMapped::SequentialScan); char* data = (char *) lookup.getData(); + char* end = data + lookup.mappedSize(); const char* entry[255]; - while (*data != '\0') { + while (data < end && *data != '\0') { const size_t columns = Util::getWordsOfLine(data, entry, 255); if (columns < 3) { Debug(Debug::WARNING) << "Not enough columns in lookup file " << file << "\n"; @@ -125,8 +126,9 @@ std::map readSetToSource(const std::string& file) { MemoryMapped source(file, MemoryMapped::WholeFile, MemoryMapped::SequentialScan); char* data = (char *) source.getData(); + char* end = data + source.mappedSize(); const char* entry[255]; - while (*data != '\0') { + while (data < end && *data != '\0') { const size_t columns = Util::getWordsOfLine(data, entry, 255); if (columns < 2) { Debug(Debug::WARNING) << "Not enough columns in lookup file " << file << "\n"; diff --git a/src/util/gff2db.cpp b/src/util/gff2db.cpp index 92daa0bba..3db8899ae 100644 --- a/src/util/gff2db.cpp +++ b/src/util/gff2db.cpp @@ -33,7 +33,7 @@ int gff2db(int argc, const char **argv, const Command &command) { headerWriter.open(); std::string outLookup = outDb + ".lookup"; std::string outLookupIndex = outDb + ".lookup.index"; - DBWriter lookupWriter(outLookup.c_str(), outLookupIndex.c_str(), par.threads, 0, Parameters::DBTYPE_OMIT_FILE); + DBWriter lookupWriter(outLookup.c_str(), outLookupIndex.c_str(), par.threads, par.compressed, Parameters::DBTYPE_OMIT_FILE); lookupWriter.open(); FILE *source = FileUtil::openAndDelete((outDb + ".source").c_str(), "w"); @@ -84,8 +84,9 @@ int gff2db(int argc, const char **argv, const Command &command) { EXIT(EXIT_FAILURE); } char *data = (char *) file.getData(); + char* end = data + file.mappedSize(); size_t idx = 0; - while (*data != '\0') { + while (data < end && *data != '\0') { // line is a comment or empty if (*data == '#' || *data == '\n') { data = Util::skipLine(data); @@ -198,7 +199,7 @@ int gff2db(int argc, const char **argv, const Command &command) { #pragma omp task { - DBWriter::createRenumberedDB(outDb, outDbIndex, outDb, outDbIndex); + DBWriter::createRenumberedDB(outDb, outDbIndex, outDb, outDbIndex, true); } } } diff --git a/util/regression b/util/regression index 622b6d310..027d37c2c 160000 --- a/util/regression +++ b/util/regression @@ -1 +1 @@ -Subproject commit 622b6d3106ca5acfa690a003b656fa2c9b3ea59b +Subproject commit 027d37c2c2f52fd9d1625b11003efc1728b524c8