[Development] QString behavior change
Thiago Macieira
thiago.macieira at intel.com
Tue Aug 11 20:14:33 CEST 2015
On Tuesday 11 August 2015 19:09:22 Allan Sandfeld Jensen wrote:
> I would second that. We can argue that the null vs empty is a misfeature we
> like to discourage because it is likely to break in some corner-cases, but
> until we get rid of it (Qt6), there is no reason to not try to be
> consistent, and deal properly with the differences when bugs are reported.
Actually, looking at the code, I was worried about the wrong part. As pasted:
if (begin == str.cbegin() && end == str.cend())
return str;
if (begin == end)
return StringType();
If the string is already empty, the first line will match. That's also the only
case when a null string would come in. So we can be sure that the next one is
non-null and could return StringType("").
I won't do that because of the next two lines:
if (!isConst && str.isDetached())
return trimmed_helper_inplace(str, begin, end);
This is what makes the rvalue-ref QString::trimmed() not allocate memory. In
fact, I think the if (begin == end) conditional is unnecessary. Just remove
those two lines.
I won't do this change, but I will accept a patch from someone who does. I
will accept it only because it's a performance improvement, not because it
keeps the nullness.
--
Thiago Macieira - thiago.macieira (AT) intel.com
Software Architect - Intel Open Source Technology Center
More information about the Development
mailing list