diff options
Diffstat (limited to 'www/analyzer/potential_checkers.html')
-rw-r--r-- | www/analyzer/potential_checkers.html | 183 |
1 files changed, 96 insertions, 87 deletions
diff --git a/www/analyzer/potential_checkers.html b/www/analyzer/potential_checkers.html index f65106e..04bf9fe 100644 --- a/www/analyzer/potential_checkers.html +++ b/www/analyzer/potential_checkers.html @@ -43,7 +43,8 @@ void test() { return; delete p2; } -</pre></td><td></td></tr> +</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.MismatchedFree <br>enhancement to unix.Malloc<br>(C, C++)</span><br><br> @@ -58,7 +59,8 @@ void test() { free(p1); // warn free(p2); // warn } -</pre></td><td></td></tr> +</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> @@ -75,7 +77,8 @@ void test() { delete p2; // warn delete p3; // warn } -</pre></td><td></td></tr> +</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> @@ -92,7 +95,9 @@ void test() { delete p2; // warn delete p3; // warn } -</pre></td><td></td></tr> +</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> @@ -116,7 +121,9 @@ void test() { f(p4); p4++; // ok } -</pre></td><td></td></tr> +</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> @@ -138,7 +145,9 @@ void test() { delete s; // warn free(s); // warn } -</pre></td><td></td></tr> +</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> @@ -156,7 +165,7 @@ void test() { f1(g((int *)malloc(sizeof(int))), h()); // warn f2(new int, new int); } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">memory.DstBufferTooSmall <br>(C, C++)</span><br><br> @@ -173,7 +182,7 @@ void test() { int* p2 = new int; memcpy(p2, p1, 3); // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">memory.NegativeArraySize <br>enhancement to experimental.security.MallocOverflow<br>(C, C++) @@ -187,7 +196,7 @@ void test() { int n1 = -1; p = new int[n1]; // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> </table> @@ -208,7 +217,7 @@ class A { A() {} ~A() { throw 1; } // warn }; -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">ctordtor.ExptInsideDtorImplicit<br> (C++)</span><br><br> @@ -221,7 +230,7 @@ class A { A() {} ~A() { f(); } // warn }; -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> </table> @@ -237,7 +246,7 @@ Function prototype has throw(T) specifier but the function do not throw </td><td><pre> void f() throw(int) { // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">exceptions.NoThrowSpecButThrows <br>(C++)</span><br><br> @@ -246,7 +255,7 @@ An exception is throw from a function having the throw() specifier void f() throw() { throw(1); // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">exceptions.ThrownTypeDiffersSpec <br>(C++)</span><br><br> @@ -258,7 +267,7 @@ void f() throw(int) { S s; throw (s); // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> </table> @@ -286,7 +295,7 @@ void test() { std::auto_ptr<int> p3((int *)malloc(sizeof(int))); // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> </table> @@ -311,7 +320,7 @@ public: }; A a; -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">undefbehavior.LocalStaticDestroyed <br>(C++)</span><br><br> @@ -336,7 +345,7 @@ A a; void f() { static B b; // <- } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">undefbehavior.UseAfterRelease <br>enhancement to unix.Malloc<br>(C, C++)</span><br><br> @@ -351,7 +360,7 @@ void test() { int i = *p; // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">undefbehavior.ZeroAllocDereference <br>enhancement to unix.Malloc<br>(C, C++)</span><br><br> @@ -362,7 +371,7 @@ undefined int *p = new int[0]; int i = p[0]; // warn -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">undefbehavior.DeadReferenced <br>(C++)</span><br><br> @@ -418,7 +427,7 @@ void test() { dynamic_cast<A*>(b); // warn delete b; // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">undefbehavior.ObjLocChanges <br>(C++)</span><br><br> @@ -439,7 +448,7 @@ void test() { new (&b2) T; delete b1; // warn } // warn -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">undefbehavior.ExprEvalOrderUndef <br>(C, C++03)</span><br><br> @@ -452,7 +461,7 @@ void test () { i = v[i++]; // warn i = ++i + 1; // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">undefbehavior.StaticInitReentered <br>(C)</span><br><br> @@ -463,7 +472,7 @@ int test(int i) { static int s = test(2*i); // warn return i+1; } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">undefbehavior.ConstModified <br>(C, C++)</span><br><br> @@ -493,7 +502,7 @@ void test() { p->x.i = 1; // ok p->x.j = 1; // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">undefbehavior.DeadDestructed <br>(C++)</span><br><br> @@ -511,7 +520,7 @@ void test() { A a; a.~A(); } // warn -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">undefbehavior.MethodCallBeforeBaseInit <br>(C++)</span><br><br> @@ -526,7 +535,7 @@ public : int f(); B() : A(f()) {} // warn }; -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">undefbehavior.MemberOrBaseRefBeforeCtor <br>(C++)</span><br><br> @@ -589,7 +598,7 @@ struct S { non_trivial nt; S() : k(&nt.j) {} // warn }; -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">undefbehavior.MemberRefAfterDtor <br>(C++)</span><br><br> @@ -620,7 +629,7 @@ void test() { s->~S(); s->f(); // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">undefbehavior.CtorForeignCall <br>(C++)</span><br><br> @@ -641,7 +650,7 @@ class C : public A, B { public: C() : B((A*)this) {} }; -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">undefbehavior.CtorForeignCast undefbehavior.CtorForeignTypeid @@ -669,7 +678,7 @@ class C : public A, B { public: C() : B((A*)this) {} }; -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">undefbehavior.MemberRefInCatch undefbehavior.BaseRefInCatch @@ -689,7 +698,7 @@ public : i=2; // warn } }; -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">undefbehavior.ReturnAtCatchEnd <br>(C++)</span><br><br> @@ -701,7 +710,7 @@ int test() try { } catch(int) { } // warn -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">undefbehavior.AutoptrsOwnSameObj <br>(C++03)</span><br><br> @@ -715,7 +724,7 @@ void test() { std::auto_ptr<int> p(data); std::auto_ptr<int> q(data); // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">undefbehavior.BasicStringBoundAccess <br>(C++03)</span><br><br> @@ -725,7 +734,7 @@ void test() { std::basic_string<char> s; char c = s[10]; // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">undefbehavior.BasicStringBoundModification <br>(C++)</span><br><br> @@ -735,7 +744,7 @@ void test() { std::basic_string<char> s; s[10] = 0; // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">undefbehavior.EosDereference <br>(C++)</span><br><br> @@ -749,7 +758,7 @@ void test() { int i = *v.end(); // warn *v.end() = 0; // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">undefbehavior.QsortNonPOD undefbehavior.QsortNonTrivial @@ -815,7 +824,7 @@ void test() { qsort(nt, 2, sizeof(non_trivial), compare2); // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">undefbehavior.ThrowWhileCopy <br>C++</span><br><br> @@ -835,7 +844,7 @@ struct S { j = s.j; } }; -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">undefbehavior.ValarrayArgBound <br>(C++)</span><br><br> @@ -853,7 +862,7 @@ void test(void) { S s[] = { S(1), S(2) }; std::valarray<S> v(s,3); // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">undefbehavior.ValarrayLengthDiffer <br>(C++)</span><br><br> @@ -886,7 +895,7 @@ void test(void) { b.resize(1); a = b; // OK } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">undefbehavior.ValarrayZeroLength <br>(C++)</span><br><br> @@ -901,7 +910,7 @@ void test(void) { v.min(); // warn v.max(); // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">undefbehavior.ValarrayBadIndirection <br>(C++)</span><br><br> @@ -917,7 +926,7 @@ void test() { a[indirect] = b; //warn a[indirect] *= b; //warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">undefbehavior.IosBaseDestroyedBeforeInit <br>(C++)</span><br> @@ -948,7 +957,7 @@ void test() { delete p1; // warn delete p2; // ok } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">undefbehavior.IosBaseUsedBeforeInit <br>(C++11)</span><br><br> @@ -980,7 +989,7 @@ void test() { delete p1; // warn delete p2; // ok } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">undefbehavior.MinusOnePosType <br>(C++)</span><br><br> @@ -1003,7 +1012,7 @@ void test() { in.seekg(pos); // warn out.seekp(-1); // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> </table> <!-- ============================ different ================================ --> @@ -1024,7 +1033,7 @@ void test() { int v[1] = {0}; f(v[i], i++); // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">different.IdenticalExprBinOp <br>(C)</span><br><br> @@ -1050,7 +1059,7 @@ void test() { if (f() && f()) {} // ok } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">different.FuncPtrInsteadOfCall <br>(C)</span><br><br> @@ -1061,7 +1070,7 @@ int f(); void test() { if (f == 0) {} // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">different.IdenticalCondIfElseIf <br>(C)</span><br><br> @@ -1073,7 +1082,7 @@ void test() { if (i == 1) {} else if (i == 1) {} // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">SuccessiveAssign <br>(C)</span><br><br> @@ -1084,7 +1093,7 @@ void test() { i=1; i=2; // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">different.NullDerefStmtOrder <br>enhancement to core.NullDereference<br>(C)</span><br><br> @@ -1105,7 +1114,7 @@ void test() { S *p2 = f(); int x2 = p2->x; // ok } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">different.NullDerefCondOrder <br>enhancement to core.NullDereference<br>(C)</span><br><br> @@ -1120,7 +1129,7 @@ void test() { S *p = f(); if (p->b && p) {}; // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">different.IdenticalStmtThenElse <br>(C)</span><br><br> @@ -1135,7 +1144,7 @@ void test() { i++; } } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">different.MultipleAccessors <br>(C++)</span><br><br> @@ -1150,7 +1159,7 @@ public: void setI(int& ii) { i = ii; } void setJ(int& jj) { i = jj; } // warn }; -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">different.AccessorsForPublic <br>(C++)</span><br><br> @@ -1162,7 +1171,7 @@ public: int getI() { return i; } void setI(int& ii) { i = ii; } }; -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">different.LibFuncResultUnised <br>(C, C++)</span><br><br> @@ -1175,7 +1184,7 @@ void test() { std::vector<int> v; v.empty(); // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">different.WrongVarForStmt <br>(C, C++)</span><br><br> @@ -1188,7 +1197,7 @@ void test() { for (j=0; j<3; ++i); // warn for (int j=0; i<3; ++j); // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">different.FloatingCompare <br>(C)</span><br><br> @@ -1201,7 +1210,7 @@ void test() { if (b == 0.5) // warn b = 0; } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">different.BoolCompare <br>maybe merge with experimental.core.BoolAssignment<br>(C, C++)</span><br><br> @@ -1213,7 +1222,7 @@ void test() { bool b; if (b == 3) {}; // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">different.BitwiseOpBoolArg <br>maybe join with experimental.core.BoolAssignment<br>(C, C++)</span><br><br> @@ -1226,7 +1235,7 @@ void test() { bool b = true; if (b & f()) {} // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">different.LabelInsideSwitch <br>(C)</span><br><br> @@ -1242,7 +1251,7 @@ void test() { c -= 1; break; } } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">different.IdenticalCondIfIf <br>(C)</span><br><br> @@ -1255,7 +1264,7 @@ void test() { if (c > 5) // warn c -= 1; } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">different.CondOpIdenticalReturn <br>(C)</span><br><br> @@ -1265,7 +1274,7 @@ void test() { unsigned a; a = a > 5 ? a : a; // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">different.UnaryPlusWithUnsigned <br>(C)</span><br><br> @@ -1275,7 +1284,7 @@ void test() { unsigned a; a = +a; // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">different.LogicalOpUselessArg <br>(C)</span><br><br> @@ -1285,7 +1294,7 @@ void test() { unsigned a; if (a<7 && a<10) {}; // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">different.SameResLogicalExpr <br>(C)</span><br><br> @@ -1297,7 +1306,7 @@ void test() { if (i==0 && i==1) {}; // warn if (i<0 || i>=0) {}; // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">different.SameResUnsignedCmp <br>(C)</span><br><br> @@ -1308,7 +1317,7 @@ void test() { if (u < -1) {}; // warn if (u >= 0) {}; // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">different.OpPrecedenceAssignCmp <br>(C)</span><br><br> @@ -1324,7 +1333,7 @@ void test() { if((b = x != y)) {} // ok if((x = f() != y)) {} // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">different.OpPrecedenceIifShift <br>(C)</span><br><br> @@ -1337,7 +1346,7 @@ void test() { std::cout << a ? "a" : "b"; // warn a << a>7 ? 1 : 2; // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">different.ObjectUnused <br>(C++)</span><br><br> @@ -1360,7 +1369,7 @@ void test() { S(0, 0); // warn std::exception(); // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">different.StaticArrayPtrCompare <br>(C)</span><br><br> @@ -1374,7 +1383,7 @@ void test() { int a2[1][1]; if (a2[0]) {}; // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">different.ConversionToBool <br>maybe join with experimental.core.BoolAssignment<br>(C, C++)</span><br><br> @@ -1384,7 +1393,7 @@ bool test() { return 1.; // warn return ""; // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">different.ArrayBound <br>enhancement to experimental.security.ArrayBound[v2]<br>(C, C++)</span><br><br> @@ -1398,7 +1407,7 @@ void test() { int i = 1; if(p2[i]) {}; // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">different.StrcpyInputSize <BR>enhancement to experimental.unix.cstring.OutOfBounds<br>(C)</span><br><br> @@ -1408,7 +1417,7 @@ void test(char* string) { char buf[24]; strcpy(buf, string); // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">different.IntegerOverflow <br>(C)</span><br><br> @@ -1427,7 +1436,7 @@ void test() { int y = INT_MAX/2+1; // warn x = y*2; // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">different.SignExtension <br>(C)</span><br><br> @@ -1451,7 +1460,7 @@ unsigned int test() { ui = g(); // warn return si; // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">different.NumericTruncation <br>(C)</span><br><br> @@ -1475,7 +1484,7 @@ int test() { ss = g(); // warn return sll; // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">different.MissingCopyCtorAssignOp <br>(C, C++)</span><br><br> @@ -1488,7 +1497,7 @@ public: C() { p = new int; } ~C() { delete p; } }; -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> </table> @@ -1513,7 +1522,7 @@ void test() { NULL, TEXT("MyProgram.exe"), NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi); } // warn -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">WinAPI.LoadLibrary <br>(C)</span><br><br> @@ -1525,7 +1534,7 @@ arbitrary location void test() { HINSTANCE h = LoadLibrary("X.dll"); // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">WinAPI.WideCharToMultiByte <br>(C)</span><br><br> @@ -1548,7 +1557,7 @@ void test() else s[res2] = 0; } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> </table> @@ -1571,7 +1580,7 @@ struct A { bool FirstIsZero(const struct A a) { // warn return a.a[0] == 0; } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">optimization.PostfixIncIter <br>(C++)</span><br><br> @@ -1585,7 +1594,7 @@ void test() { for(it = v.begin(); it != v.end(); it++) {}; // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">optimization.MultipleCallsStrlen <br>(C)</span><br><br> @@ -1600,7 +1609,7 @@ void test() { if (strlen(s) > 0 && strlen(s) < 7) {}; // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">optimization.EmptyCstrDetect <br>(C)</span><br><br> @@ -1613,7 +1622,7 @@ void test() { const char* s = "abc"; if (strlen(s) > 0) {}; // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">optimization.StrLengthCalculation <br>(C, C++)</span><br><br> @@ -1627,7 +1636,7 @@ void test() { std::string s; if (strlen(s.c_str()) != 0) {}; // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> <tr><td><span class="name">optimization.EmptyContainerDetect <br>(C, C++)</span><br><br> @@ -1640,7 +1649,7 @@ void test() { std::list<int> l; if (l.size() != 0) {}; // warn } -</pre></td><td></td></tr> +</pre></td><td class="aligned"></td></tr> </table> |