diff options
Diffstat (limited to 'src/imports/sharedimage/qsharedimageloader.cpp')
-rw-r--r-- | src/imports/sharedimage/qsharedimageloader.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/imports/sharedimage/qsharedimageloader.cpp b/src/imports/sharedimage/qsharedimageloader.cpp index fb96a79187..ee862b6a77 100644 --- a/src/imports/sharedimage/qsharedimageloader.cpp +++ b/src/imports/sharedimage/qsharedimageloader.cpp @@ -117,7 +117,7 @@ void QSharedImageLoaderPrivate::storeImageToMem(void *data, const QImage &img) h->format = img.format(); uchar *p = static_cast<uchar *>(data) + sizeof(SharedImageHeader); - memcpy(p, img.constBits(), img.byteCount()); + memcpy(p, img.constBits(), img.sizeInBytes()); } @@ -174,8 +174,11 @@ QImage QSharedImageLoaderPrivate::load(const QString &path, QSharedImageLoader:: QImage img = q->loadFile(path, params); if (img.isNull()) return nil; - int size = sizeof(SharedImageHeader) + img.byteCount(); - if (shm->create(size)) { + size_t size = sizeof(SharedImageHeader) + img.sizeInBytes(); + if (size > std::numeric_limits<int>::max()) { + qCDebug(lcSharedImage) << "Image" << path << "to large to load"; + return nil; + } else if (shm->create(int(size))) { qCDebug(lcSharedImage) << "Created new shm segment of size" << size << "for image" << path; if (!shm->lock()) { qCDebug(lcSharedImage) << "Lock1 failed!?" << shm->errorString(); |