[Development] Are we free of code that checks this isn't null?
Knoll Lars
Lars.Knoll at theqtcompany.com
Fri Mar 4 09:11:42 CET 2016
On 04/03/16 08:59, "Development on behalf of Thiago Macieira" <development-bounces+lars.knoll=theqtcompany.com at qt-project.org on behalf of thiago.macieira at intel.com> wrote:
>On sexta-feira, 4 de março de 2016 09:58:53 PST Marc Mutz wrote:
>> On Friday 04 March 2016 07:52:15 Thiago Macieira wrote:
>> > Found in GCC 6's changelog (http://gcc.gnu.org/gcc-6/changes.html):
>> > > Value range propagation now assumes that the this pointer of C++ member
>> > > functions is non-null. This eliminates common null pointer checks but
>> > > also breaks some non-conforming code-bases (such as Qt-5, Chromium,
>> > > KDevelop). As a temporary work-around -fno-delete-null-pointer-checks
>> > > can be used. Wrong code can be identified by using -fsanitize=undefined.
>> >
>> > Are we free of such mistakes? Or do we need to enable -fno-delete-null-
>> > pointer-checks?
>>
>> This comes to mind;
>>
>> QPointer<QObject> that = this;
>> // ...
>> if (!that) return;
>>
>> Not sure it's affected, though.
>
>Shouldn't be because that !that call isn't checking the this pointer, but
>instead is checking the strong refcount inside the QSharedPointer.
>
>> Don't know off-handedly anything else that where this == nullptr would be
>> valid. Only way to find out is to enable -fno-delete-null-pointer-checks
>> except for -developer-build and trying to fix the ubsan issues.
>
>It's not valid. The this pointer is never null, according to the standard.
>
>And yet we had code like that in V4 (qtdeclarative). Clang started complaining
>about it and I tried to fix it by just removing the checks, but they were
>apparently in use. Since I don't remember seeing that warning anymore, it's
>likely to be fixed.
>
>But I am asking to be sure.
Qt QML should be ok. I went through those issues and fixed the at some point.
Cheers,
Lars
>
>> /me upgrades to GCC 6.
>
>I might still have a patch or two that aren't merged that fix GCC 6 warnings.
>But when you compile with it, can you make sure it doesn't print any
>misleading-identation warnings? There were a couple of false positives that I
>reported and GCC fixed.
>
>--
>Thiago Macieira - thiago.macieira (AT) intel.com
> Software Architect - Intel Open Source Technology Center
>
>_______________________________________________
>Development mailing list
>Development at qt-project.org
>http://lists.qt-project.org/mailman/listinfo/development
More information about the Development
mailing list