diff options
author | Jens Lorenz <jlorenz@de.adit-jv.com> | 2016-11-11 15:48:02 +0100 |
---|---|---|
committer | Christian as GENIVI Maintainer <genivi-maint-audiomanager@genivi.org> | 2016-11-14 02:50:01 -0800 |
commit | f010b7a8a2d27e321ed37f7d93811c06e8f3e7f3 (patch) | |
tree | be166587948c2fe8f69d834b21efe4e8bb734668 /AudioManagerUtilities/include/CAmSerializer.h | |
parent | 4da6fec4e464929dfc577d7eac0a1d0c2955737a (diff) | |
download | audiomanager-f010b7a8a2d27e321ed37f7d93811c06e8f3e7f3.tar.gz |
Utility: Serializer::dtor must also remove the fd from list to prevent crash.
Signed-off-by: Jens Lorenz <jlorenz@de.adit-jv.com>
Diffstat (limited to 'AudioManagerUtilities/include/CAmSerializer.h')
-rw-r--r-- | AudioManagerUtilities/include/CAmSerializer.h | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/AudioManagerUtilities/include/CAmSerializer.h b/AudioManagerUtilities/include/CAmSerializer.h index 40f2f07..b0cd70e 100644 --- a/AudioManagerUtilities/include/CAmSerializer.h +++ b/AudioManagerUtilities/include/CAmSerializer.h @@ -254,6 +254,8 @@ private: int mPipe[2]; //!< the pipe int mReturnPipe[2]; //!< pipe handling returns + sh_pollHandle_t mHandle; + CAmSocketHandler* mpSocketHandler; std::deque<CAmDelegagePtr> mListDelegatePoiters; //!< intermediate queue to store the pipe results public: @@ -764,6 +766,8 @@ public: CAmSerializer(CAmSocketHandler *iSocketHandler) : mPipe(), // mReturnPipe(),// + mHandle(), + mpSocketHandler(iSocketHandler), mListDelegatePoiters(), // receiverCallbackT(this, &CAmSerializer::receiverCallback), // dispatcherCallbackT(this, &CAmSerializer::dispatcherCallback), // @@ -784,17 +788,17 @@ public: } short event = 0; - sh_pollHandle_t handle; event |= POLLIN; - iSocketHandler->addFDPoll(mPipe[0], event, NULL, &receiverCallbackT, &checkerCallbackT, &dispatcherCallbackT, NULL, handle); + mpSocketHandler->addFDPoll(mPipe[0], event, NULL, &receiverCallbackT, &checkerCallbackT, &dispatcherCallbackT, NULL, mHandle); } ~CAmSerializer() { - close(mPipe[0]); - close(mPipe[1]); - close(mReturnPipe[0]); - close(mReturnPipe[1]); + mpSocketHandler->removeFDPoll(mHandle); + close(mPipe[0]); + close(mPipe[1]); + close(mReturnPipe[0]); + close(mReturnPipe[1]); } }; } /* namespace am */ |