From d2833a3ce5af725d66ef9338f2a61b766dd3cb2d Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Tue, 2 Jun 2020 15:51:15 +0200 Subject: Ensure left/right/mid behave in a compatible way MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit QString and QStringRef did bounds checking for left/right/mid, whereas QStringView was asserting on out of bounds. Relax the behavior for QStringView and do bounds checking on pos/n as well. This removes a source of potentially hidden errors when porting from QStringRef (or QString) to QStringView. Unfortunately, one difference remains, where QByteArray::left/right() behaves differently (and somewhat more sane) than QString and QStringRef. We're keeping the difference here, as it has been around for many years. Mark left/right/mid as obsolete and to be replaced with the new first/last/slice methods. Change-Id: I18c203799ba78c928a4610a6038089f27696c22e Reviewed-by: MÃ¥rten Nordheim --- src/corelib/tools/qarraydata.cpp | 29 ----------------------------- 1 file changed, 29 deletions(-) (limited to 'src/corelib/tools/qarraydata.cpp') diff --git a/src/corelib/tools/qarraydata.cpp b/src/corelib/tools/qarraydata.cpp index 497eae1f7fd..b72ca201311 100644 --- a/src/corelib/tools/qarraydata.cpp +++ b/src/corelib/tools/qarraydata.cpp @@ -281,33 +281,4 @@ void QArrayData::deallocate(QArrayData *data, size_t objectSize, ::free(data); } -namespace QtPrivate { -/*! - \internal -*/ -QContainerImplHelper::CutResult QContainerImplHelper::mid(int originalLength, int *_position, int *_length) -{ - int &position = *_position; - int &length = *_length; - if (position > originalLength) - return Null; - - if (position < 0) { - if (length < 0 || length + position >= originalLength) - return Full; - if (length + position <= 0) - return Null; - length += position; - position = 0; - } else if (uint(length) > uint(originalLength - position)) { - length = originalLength - position; - } - - if (position == 0 && length == originalLength) - return Full; - - return length > 0 ? Subset : Empty; -} -} - QT_END_NAMESPACE -- cgit v1.2.3