@@ -196,9 +196,7 @@ std::optional<bool> isUncountedPtr(const QualType T) {
196196 return false ;
197197}
198198
199- std::optional<bool > isUnsafePtr (const Type *T) {
200- assert (T);
201-
199+ std::optional<bool > isUnsafePtr (const QualType T) {
202200 if (T->isPointerType () || T->isReferenceType ()) {
203201 if (auto *CXXRD = T->getPointeeCXXRecordDecl ()) {
204202 return isUncounted (CXXRD) || isUnchecked (CXXRD);
@@ -228,23 +226,13 @@ std::optional<bool> isGetterOfSafePtr(const CXXMethodDecl *M) {
228226 // Ref<T> -> T conversion
229227 // FIXME: Currently allowing any Ref<T> -> whatever cast.
230228 if (isRefType (className)) {
231- if (auto *maybeRefToRawOperator = dyn_cast<CXXConversionDecl>(M)) {
232- if (auto *targetConversionType =
233- maybeRefToRawOperator->getConversionType ().getTypePtrOrNull ()) {
234- return isUnsafePtr (targetConversionType);
235- }
236- }
229+ if (auto *maybeRefToRawOperator = dyn_cast<CXXConversionDecl>(M))
230+ return isUnsafePtr (maybeRefToRawOperator->getConversionType ());
237231 }
238232
239233 if (isCheckedPtr (className)) {
240- if (auto *maybeRefToRawOperator = dyn_cast<CXXConversionDecl>(M)) {
241- if (auto *targetConversionType =
242- maybeRefToRawOperator->getConversionType ().getTypePtrOrNull ()) {
243- return isUnsafePtr (targetConversionType);
244- }
245- }
246234 if (auto *maybeRefToRawOperator = dyn_cast<CXXConversionDecl>(M))
247- return isUncountedPtr (maybeRefToRawOperator->getConversionType ());
235+ return isUnsafePtr (maybeRefToRawOperator->getConversionType ());
248236 }
249237 }
250238 return false ;
0 commit comments