[Libreoffice-commits] core.git: compilerplugins/clang sal/osl

Stephan Bergmann sbergman at redhat.com
Tue May 30 11:41:42 UTC 2017


 compilerplugins/clang/redundantcast.cxx |   24 ++++++++++++++++++++++++
 sal/osl/unx/socket.cxx                  |    2 +-
 2 files changed, 25 insertions(+), 1 deletion(-)

New commits:
commit f6dda4e1603ee1d901bf747c60f232db1f1b56a5
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Tue May 30 13:40:53 2017 +0200

    Make loplugin:redundantcast accept bool(FD_ISSET(...)) again
    
    Change-Id: I4e96c55c246cf806f17df31844a00d0e8a5e4f56

diff --git a/compilerplugins/clang/redundantcast.cxx b/compilerplugins/clang/redundantcast.cxx
index 148cdbead9be..6a554a774ee2 100644
--- a/compilerplugins/clang/redundantcast.cxx
+++ b/compilerplugins/clang/redundantcast.cxx
@@ -483,6 +483,30 @@ bool RedundantCast::VisitCXXFunctionalCastExpr(CXXFunctionalCastExpr const * exp
     if (loplugin::hasPathnamePrefix(aFileName, SRCDIR "/svx/source/tbxctrls/fillctrl.cxx"))
         return true;
 
+    // See the commit message of d0e7d020fa405ab94f19916ec96fbd4611da0031
+    // "socket.c -> socket.cxx" for the reason to have
+    //
+    //   bool(FD_ISSET(...))
+    //
+    // in sal/osl/unx/socket.cxx:
+    auto const sub = compat::getSubExprAsWritten(expr);
+    //TODO: Better check that sub is exactly an expansion of FD_ISSET:
+    if (sub->getLocEnd().isMacroID()) {
+        for (auto loc = sub->getLocStart();
+             loc.isMacroID()
+                 && (compiler.getSourceManager()
+                     .isAtStartOfImmediateMacroExpansion(loc));
+             loc = compiler.getSourceManager().getImmediateMacroCallerLoc(loc))
+        {
+            if (Lexer::getImmediateMacroName(
+                    loc, compiler.getSourceManager(), compiler.getLangOpts())
+                == "FD_ISSET")
+            {
+                return true;
+            }
+        }
+    }
+
     auto const t1 = expr->getTypeAsWritten();
     auto const t2 = compat::getSubExprAsWritten(expr)->getType();
     if (t1 != t2)
diff --git a/sal/osl/unx/socket.cxx b/sal/osl/unx/socket.cxx
index bb8bf337766e..6b24b0ab0143 100644
--- a/sal/osl/unx/socket.cxx
+++ b/sal/osl/unx/socket.cxx
@@ -2399,7 +2399,7 @@ sal_Bool SAL_CALL osl_isInSocketSet(oslSocketSet Set, oslSocket pSocket)
         return false;
     }
 
-    return FD_ISSET(pSocket->m_Socket, &Set->m_Set);
+    return bool(FD_ISSET(pSocket->m_Socket, &Set->m_Set));
 }
 
 sal_Int32 SAL_CALL osl_demultiplexSocketEvents(oslSocketSet IncomingSet,


More information about the Libreoffice-commits mailing list