summaryrefslogtreecommitdiff
path: root/www/analyzer/potential_checkers.html
diff options
context:
space:
mode:
Diffstat (limited to 'www/analyzer/potential_checkers.html')
-rw-r--r--www/analyzer/potential_checkers.html83
1 files changed, 11 insertions, 72 deletions
diff --git a/www/analyzer/potential_checkers.html b/www/analyzer/potential_checkers.html
index 04bf9fe45d09..c769541e70d8 100644
--- a/www/analyzer/potential_checkers.html
+++ b/www/analyzer/potential_checkers.html
@@ -62,43 +62,6 @@ void test() {
</pre></td><td class="aligned"><a href="http://llvm.org/bugs/show_bug.cgi?id=15238">PR15238</a>
</td></tr>
-<tr><td><span class="name">memory.MismatchedDelete
-<br>(C, C++)</span><br><br>
-Mismatched deallocation function is used
-</td><td><pre>
-#include &lt;stdlib.h&gt;
-
-void test() {
- int *p1 = new int;
- int *p2 = new int[1];
- int *p3 = (int*)malloc(sizeof(int));
-
- delete[] p1; // warn
- delete p2; // warn
- delete p3; // warn
-}
-</pre></td><td class="aligned"><a href="http://llvm.org/bugs/show_bug.cgi?id=15238">PR15238</a>
-</td></tr>
-
-<tr><td><span class="name">memory.MultipleDelete
-<br>(C++)</span><br><br>
-Attempt to deallocate released memory
-</td><td><pre>
-#include &lt;new&gt;
-
-void test() {
- int *p1 = new int;
- int *p2 = new(p1) int;
- int *p3 = p1;
- delete p1;
- delete p1; // warn
- delete p2; // warn
- delete p3; // warn
-}
-</pre></td><td class="aligned"><a href="http://llvm.org/bugs/show_bug.cgi?id=15237">PR15237</a>
-</td></tr>
-
-
<tr><td><span class="name">memory.LeakPtrValChanged
<br>enhancement to unix.Malloc<br>(C, C++)</span><br><br>
Potential memory leak: a pointer to newly allocated data loses its original
@@ -124,31 +87,6 @@ void test() {
</pre></td><td class="aligned">done at r174678 (C case)
</td></tr>
-
-<tr><td><span class="name">memory.DeallocateNonPtr
-<br>enhancement to unix.Malloc<br>(C, C++)</span><br><br>
-Deallocation function is applied to non-pointer
-</td><td><pre>
-#include &lt;stdlib.h&gt;
-
-class A {
- int *p;
-public:
- operator int *() { return p; }
-};
-
-void test() {
- A a;
- delete a; // warn
- free(a); // warn
- const char *s = "text";
- delete s; // warn
- free(s); // warn
-}
-</pre></td><td class="aligned"><a href="http://llvm.org/bugs/show_bug.cgi?id=15237">PR15237</a>
-</td></tr>
-
-
<tr><td><span class="name">memory.LeakEvalOrder<br>
(C, C++)</span><br><br>
Potential memory leak: argument evaluation order is undefined, g() may never be called
@@ -232,6 +170,17 @@ class A {
};
</pre></td><td class="aligned"></td></tr>
+<tr><td><span class="name">ctordtor.PlacementSelfCopy<br>
+(C++11)</span><br><br>
+For a placement copy or move, it is almost certainly an error if the constructed object is also the object being copied from.
+</td><td><pre>
+class A {};
+
+void test(A *dst, A *src) {
+ ::new (dst) A(*dst); // warn (should be 'src')
+}
+</pre></td><td class="aligned"><!--rdar://problem/13688366--></td></tr>
+
</table>
<!-- ============================== exceptions ============================= -->
@@ -1276,16 +1225,6 @@ void test() {
}
</pre></td><td class="aligned"></td></tr>
-<tr><td><span class="name">different.UnaryPlusWithUnsigned
-<br>(C)</span><br><br>
-Using 'unary +' with unsigned is meaningless
-</td><td><pre>
-void test() {
- unsigned a;
- a = +a; // warn
-}
-</pre></td><td class="aligned"></td></tr>
-
<tr><td><span class="name">different.LogicalOpUselessArg
<br>(C)</span><br><br>
The second operand of the &amp;&amp; operator has no impact on expression result