File tree Expand file tree Collapse file tree 2 files changed +20
-0
lines changed
lib/StaticAnalyzer/Checkers/WebKit
test/Analysis/Checkers/WebKit Expand file tree Collapse file tree 2 files changed +20
-0
lines changed Original file line number Diff line number Diff line change @@ -101,6 +101,11 @@ bool tryToFindPtrOrigin(
101101 if (isSingleton (callee))
102102 return callback (E, true );
103103
104+ if (callee->isInStdNamespace () && safeGetName (callee) == " forward" ) {
105+ E = call->getArg (0 );
106+ continue ;
107+ }
108+
104109 if (isPtrConversion (callee)) {
105110 E = call->getArg (0 );
106111 continue ;
Original file line number Diff line number Diff line change @@ -588,6 +588,8 @@ class UnrelatedClass {
588588 getFieldTrivial ().nonTrivial23 ();
589589 // expected-warning@-1{{Call argument for 'this' parameter is uncounted and unsafe}}
590590 }
591+
592+ void setField (RefCounted*);
591593};
592594
593595class UnrelatedClass2 {
@@ -598,11 +600,24 @@ class UnrelatedClass2 {
598600 RefCounted &getFieldTrivialRecursively () { return getFieldTrivial ().getFieldTrivial (); }
599601 RefCounted *getFieldTrivialTernary () { return Field ? Field->getFieldTernary () : nullptr ; }
600602
603+ template <typename T, typename ... AdditionalArgs>
604+ void callSetField (T&& item, AdditionalArgs&&... args)
605+ {
606+ item.setField (std::forward<AdditionalArgs>(args)...);
607+ }
608+
609+ template <typename T, typename ... AdditionalArgs>
610+ void callSetField2 (T&& item, AdditionalArgs&&... args)
611+ {
612+ item.setField (std::move<AdditionalArgs>(args)...);
613+ }
614+
601615 void test () {
602616 getFieldTrivialRecursively ().trivial1 (); // no-warning
603617 getFieldTrivialTernary ()->trivial2 (); // no-warning
604618 getFieldTrivialRecursively ().someFunction ();
605619 // expected-warning@-1{{Call argument for 'this' parameter is uncounted and unsafe}}
620+ callSetField (getFieldTrivial (), refCountedObj ()); // no-warning
606621 }
607622};
608623
You can’t perform that action at this time.
0 commit comments