--- a/src/utils/md5ut.cpp
+++ b/src/utils/md5ut.cpp
@@ -20,15 +20,17 @@
#include <string.h>
#include "md5ut.h"
-
#include "readfile.h"
using namespace std;
-class FileScanMd5 : public FileScanDo {
+// Quite incredibly if this class is named FileScanMd5 like the
+// different one in readfile.cpp, the vtables get mixed up and mh_xslt
+// crashes while calling a virtual function (gcc 6.3 and 7.3)
+class FileScanMd5loc : public FileScanDo {
public:
- FileScanMd5(string& d) : digest(d) {}
- virtual bool init(size_t size, string *)
+ FileScanMd5loc(string& d) : digest(d) {}
+ virtual bool init(int64_t, string *)
{
MD5Init(&ctx);
return true;
@@ -44,7 +46,7 @@
bool MD5File(const string& filename, string &digest, string *reason)
{
- FileScanMd5 md5er(digest);
+ FileScanMd5loc md5er(digest);
if (!file_scan(filename, &md5er, reason))
return false;
// We happen to know that digest and md5er.digest are the same object