From 1474f8864faafebc92ff79959bb5c698bd29b704 Mon Sep 17 00:00:00 2001 From: Dan Albert Date: Mon, 8 Sep 2014 18:59:09 -0700 Subject: [PATCH] Don't check if this == NULL. Entering a method with this == NULL is undefined behavior. Clang whines about this. Change-Id: Ibde628395ca10dfef0d2f59e81280576f104b83c --- libs/binder/IInterface.cpp | 4 ++-- libs/gui/LayerState.cpp | 2 +- services/surfaceflinger/SurfaceFlinger.cpp | 6 +++++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/libs/binder/IInterface.cpp b/libs/binder/IInterface.cpp index 29acf5ddd..99a9ffeea 100644 --- a/libs/binder/IInterface.cpp +++ b/libs/binder/IInterface.cpp @@ -29,12 +29,12 @@ IInterface::~IInterface() { sp IInterface::asBinder() { - return this ? onAsBinder() : NULL; + return onAsBinder(); } sp IInterface::asBinder() const { - return this ? const_cast(this)->onAsBinder() : NULL; + return const_cast(this)->onAsBinder(); } // --------------------------------------------------------------------------- diff --git a/libs/gui/LayerState.cpp b/libs/gui/LayerState.cpp index acdbd7716..498953f2e 100644 --- a/libs/gui/LayerState.cpp +++ b/libs/gui/LayerState.cpp @@ -75,7 +75,7 @@ status_t ComposerState::read(const Parcel& input) { status_t DisplayState::write(Parcel& output) const { output.writeStrongBinder(token); - output.writeStrongBinder(surface->asBinder()); + output.writeStrongBinder(surface != NULL ? surface->asBinder() : NULL); output.writeInt32(what); output.writeInt32(layerStack); output.writeInt32(orientation); diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 943ed0221..512ec0572 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -1110,7 +1110,11 @@ void SurfaceFlinger::handleTransactionLocked(uint32_t transactionFlags) // this display is in both lists. see if something changed. const DisplayDeviceState& state(curr[j]); const wp& display(curr.keyAt(j)); - if (state.surface->asBinder() != draw[i].surface->asBinder()) { + const sp state_binder = + state.surface != NULL ? state.surface->asBinder() : NULL; + const sp draw_binder = + draw[i].surface != NULL ? draw[i].surface->asBinder() : NULL; + if (state_binder != draw_binder) { // changing the surface is like destroying and // recreating the DisplayDevice, so we just remove it // from the drawing state, so that it get re-added