diff --git a/plugins/cli7zplugin/cliplugin.cpp b/plugins/cli7zplugin/cliplugin.cpp --- a/plugins/cli7zplugin/cliplugin.cpp +++ b/plugins/cli7zplugin/cliplugin.cpp @@ -274,7 +274,7 @@ bool CliPlugin::readExtractLine(const QString &line) { - QRegularExpression rx(QStringLiteral("ERROR: E_FAIL")); + QRegularExpression rx(QStringLiteral("ERROR: (E_FAIL|CRC Failed)")); if (rx.match(line).hasMatch()) { emit error(i18n("Extraction failed.")); diff --git a/plugins/clizipplugin/cliplugin.cpp b/plugins/clizipplugin/cliplugin.cpp --- a/plugins/clizipplugin/cliplugin.cpp +++ b/plugins/clizipplugin/cliplugin.cpp @@ -192,6 +192,7 @@ { const QRegularExpression rxUnsupCompMethod(QStringLiteral("unsupported compression method (\\d+)")); const QRegularExpression rxUnsupEncMethod(QStringLiteral("need PK compat. v\\d\\.\\d \\(can do v\\d\\.\\d\\)")); + const QRegularExpression rxBadCRC(QStringLiteral("bad CRC")); QRegularExpressionMatch unsupCompMethodMatch = rxUnsupCompMethod.match(line); if (unsupCompMethodMatch.hasMatch()) { @@ -204,6 +205,11 @@ return false; } + if (rxBadCRC.match(line).hasMatch()) { + emit error(i18n("Extraction failed due to one or more corrupt files. Any extracted files may be damaged.")); + return false; + } + return true; }