c3bfa1c
diff --git a/src/syncevo/SyncSource.h b/src/syncevo/SyncSource.h
c3bfa1c
index 7029993..d38d5e8 100644
c3bfa1c
--- a/src/syncevo/SyncSource.h
c3bfa1c
+++ b/src/syncevo/SyncSource.h
c3bfa1c
@@ -1830,7 +1830,20 @@ class SyncSourceBlob : public virtual SyncSourceBase
c3bfa1c
                               void **aBlkPtr, size_t *aBlkSize,
c3bfa1c
                               size_t *aTotSize,
c3bfa1c
                               bool aFirst, bool *aLast) {
c3bfa1c
-        return m_blob.ReadBlob(aID, aBlobID, aBlkPtr, aBlkSize, aTotSize, aFirst, aLast);
c3bfa1c
+        // Translate between sysync::memSize and size_t, which
c3bfa1c
+        // is different on s390 (or at least the compiler complains...).
c3bfa1c
+        sysync::memSize blksize, totsize;
c3bfa1c
+        sysync::TSyError err = m_blob.ReadBlob(aID, aBlobID, aBlkPtr,
c3bfa1c
+                                               aBlkSize ? &blksize : NULL,
c3bfa1c
+                                               aTotSize ? &totsize : NULL,
c3bfa1c
+                                               aFirst, aLast);
c3bfa1c
+        if (aBlkSize) {
c3bfa1c
+            *aBlkSize = blksize;
c3bfa1c
+        }
c3bfa1c
+        if (aTotSize) {
c3bfa1c
+            *aTotSize = totsize;
c3bfa1c
+        }
c3bfa1c
+        return err;
c3bfa1c
     }
c3bfa1c
     sysync::TSyError writeBlob(sysync::cItemID aID, const char *aBlobID,
c3bfa1c
                                void *aBlkPtr, size_t aBlkSize,
c3bfa1c
diff --git a/src/syncevo/SynthesisDBPlugin.cpp b/src/syncevo/SynthesisDBPlugin.cpp
c3bfa1c
index 089a687..346e552 100644
c3bfa1c
--- a/src/syncevo/SynthesisDBPlugin.cpp
c3bfa1c
+++ b/src/syncevo/SynthesisDBPlugin.cpp
c3bfa1c
@@ -721,8 +721,19 @@ sysync::TSyError SyncEvolution_ReadBlob(CContext aContext, cItemID  aID,  cAppCh
c3bfa1c
   TSyError res;
c3bfa1c
   if (source->getOperations().m_readBlob) {
c3bfa1c
       try {
c3bfa1c
-          res = source->getOperations().m_readBlob(aID, aBlobID, (void **)aBlkPtr, aBlkSize,
c3bfa1c
-                                                   aTotSize, aFirst, aLast);
c3bfa1c
+	    size_t blksize, totsize;
c3bfa1c
+	    /* Another conversion between memSize and size_t to make s390 happy */
c3bfa1c
+            res = source->getOperations().m_readBlob(aID, aBlobID, (void **)aBlkPtr,
c3bfa1c
+						     aBlkSize ? &blksize : NULL,
c3bfa1c
+						     aTotSize ? &totsize : NULL,
c3bfa1c
+						     aFirst, aLast);
c3bfa1c
+	    if (aBlkSize) {
c3bfa1c
+	        *aBlkSize = blksize;
c3bfa1c
+	    }
c3bfa1c
+            if (aTotSize) {
c3bfa1c
+                *aTotSize = totsize;
c3bfa1c
+            }
c3bfa1c
+
c3bfa1c
       } catch (...) {
c3bfa1c
           res = source->handleException();
c3bfa1c
       }