New clang warns about boolean checks for |this| pointer in RenderObject debug methods
authorddkilzer@apple.com <ddkilzer@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 6 Sep 2014 16:04:25 +0000 (16:04 +0000)
committerddkilzer@apple.com <ddkilzer@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 6 Sep 2014 16:04:25 +0000 (16:04 +0000)
<http://webkit.org/b/136599>

Reviewed by Zalan Bujtas.

Ignores the following static analyzer warnings:

    Source/WebCore/rendering/RenderObject.cpp:1465:10: error: 'this' pointer cannot be null in well-defined C++ code; pointer may be assumed to always convert to true [-Werror,-Wundefined-bool-conversion]
        if (!this) {
            ~^~~~
    Source/WebCore/rendering/RenderObject.cpp:1584:10: error: 'this' pointer cannot be null in well-defined C++ code; pointer may be assumed to always convert to true [-Werror,-Wundefined-bool-conversion]
        if (!this)
            ~^~~~

* rendering/RenderObject.cpp:
(WebCore::RenderObject::showRenderObject):
(WebCore::RenderObject::showRenderSubTreeAndMark):
Add "#pragma clang" preprocessor macros to ignore this warning
since the code is only compiled for Debug builds.  Also add a
pragma for the pragma so older clangs don't complain about an
unkonwn pragma.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@173357 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/rendering/RenderObject.cpp

index ad0a0cda095ba42572c86f67b03ede504f12cce5..478f329a8f561d01fa82ccee95fb08e4e6aae6ba 100644 (file)
@@ -1,3 +1,27 @@
+2014-09-06  David Kilzer  <ddkilzer@apple.com>
+
+        New clang warns about boolean checks for |this| pointer in RenderObject debug methods
+        <http://webkit.org/b/136599>
+
+        Reviewed by Zalan Bujtas.
+
+        Ignores the following static analyzer warnings:
+
+            Source/WebCore/rendering/RenderObject.cpp:1465:10: error: 'this' pointer cannot be null in well-defined C++ code; pointer may be assumed to always convert to true [-Werror,-Wundefined-bool-conversion]
+                if (!this) {
+                    ~^~~~
+            Source/WebCore/rendering/RenderObject.cpp:1584:10: error: 'this' pointer cannot be null in well-defined C++ code; pointer may be assumed to always convert to true [-Werror,-Wundefined-bool-conversion]
+                if (!this)
+                    ~^~~~
+
+        * rendering/RenderObject.cpp:
+        (WebCore::RenderObject::showRenderObject):
+        (WebCore::RenderObject::showRenderSubTreeAndMark):
+        Add "#pragma clang" preprocessor macros to ignore this warning
+        since the code is only compiled for Debug builds.  Also add a
+        pragma for the pragma so older clangs don't complain about an
+        unkonwn pragma.
+
 2014-09-06  Antti Koivisto  <antti@apple.com>
 
         Serialize ResourceResponses using WebKit types
index 2459e53e1f2b6fd6c7fbd869172e21aa3638ab14..0723fd7c774c03ebaad3597e120f852c1dd07cd1 100644 (file)
@@ -1452,11 +1452,19 @@ void RenderObject::showRegionsInformation() const
 
 void RenderObject::showRenderObject(bool mark, int depth) const
 {
-    // As this function is intended to be used when debugging, the this pointer may be 0.
+#if COMPILER(CLANG)
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wunknown-pragmas"
+#pragma clang diagnostic ignored "-Wundefined-bool-conversion"
+#endif
+    // As this function is intended to be used when debugging, the |this| pointer may be 0.
     if (!this) {
         fprintf(stderr, "(null)\n");
         return;
     }
+#if COMPILER(CLANG)
+#pragma clang diagnostic pop
+#endif
 
     if (isPositioned()) {
         if (isRelPositioned())
@@ -1564,8 +1572,17 @@ void RenderObject::showRenderObject(bool mark, int depth) const
 
 void RenderObject::showRenderSubTreeAndMark(const RenderObject* markedObject, int depth) const
 {
+#if COMPILER(CLANG)
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wunknown-pragmas"
+#pragma clang diagnostic ignored "-Wundefined-bool-conversion"
+#endif
+    // As this function is intended to be used when debugging, the |this| pointer may be 0.
     if (!this)
         return;
+#if COMPILER(CLANG)
+#pragma clang diagnostic pop
+#endif
 
     showRenderObject(markedObject == this, depth);
     if (isRenderBlockFlow())