Index: clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp =================================================================== --- clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp +++ clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp @@ -268,11 +268,17 @@ QualType Ty) { Optional val = V.getAs(); if (!val) - return std::pair(state, state); + return std::pair(state, state); SValBuilder &svalBuilder = C.getSValBuilder(); DefinedOrUnknownSVal zero = svalBuilder.makeZeroVal(Ty); - return state->assume(svalBuilder.evalEQ(state, *val, zero)); + + // equality operation is only acceptable between the same types + if (V.getAs() && zero.getAs() || + V.getAs() && zero.getAs()) + return state->assume(svalBuilder.evalEQ(state, *val, zero)); + + return std::pair(state, state); } ProgramStateRef CStringChecker::checkNonNull(CheckerContext &C,