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