diff --git a/src/tools/rcc/rcc.cpp b/src/tools/rcc/rcc.cpp index 010a785..60e2ce9 100644 --- a/src/tools/rcc/rcc.cpp +++ b/src/tools/rcc/rcc.cpp @@ -83,6 +83,10 @@ static inline QString msgOpenReadFailed(const QString &fname, const QString &why } +// Offsets of written blobs (for eliminate duplicates data) +QHash writtenBlobs; + + /////////////////////////////////////////////////////////// // // RCCFileInfo @@ -215,6 +219,12 @@ qint64 RCCFileInfo::writeDataBlob(RCCResourceLibrary &lib, qint64 offset, { const bool text = (lib.m_format == RCCResourceLibrary::C_Code); + // don't put the same file data + if(writtenBlobs.contains(m_fileInfo.absoluteFilePath())) { + m_dataOffset = writtenBlobs.value(m_fileInfo.absoluteFilePath()); + return offset; + } + //capture the offset m_dataOffset = offset; @@ -273,6 +283,10 @@ qint64 RCCFileInfo::writeDataBlob(RCCResourceLibrary &lib, qint64 offset, // done if (text) lib.writeString("\n "); + + // this file has been written + writtenBlobs[m_fileInfo.absoluteFilePath()] = m_dataOffset; + return offset; }