diff options
Diffstat (limited to 'src/corelib/tools/qarraydatapointer.h')
-rw-r--r-- | src/corelib/tools/qarraydatapointer.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/corelib/tools/qarraydatapointer.h b/src/corelib/tools/qarraydatapointer.h index 1dc02daa63..8b1d2a805c 100644 --- a/src/corelib/tools/qarraydatapointer.h +++ b/src/corelib/tools/qarraydatapointer.h @@ -114,6 +114,8 @@ public: void setSharable(bool sharable) { + // Can't call setSharable on static read-only data, like shared_null + // and the internal shared-empties. if (d->alloc == 0 && d->size == 0) { d = Data::allocate(0, sharable ? QArrayData::Default @@ -138,7 +140,7 @@ public: bool detach() { - if (d->ref.isShared()) { + if (!d->isMutable() || d->ref.isShared()) { Data *copy = clone(d->detachFlags()); QArrayDataPointer old(d); d = copy; |