From abfeea182d6ea4905f80da6f17556da278cce4d4 Mon Sep 17 00:00:00 2001 From: Yingjie Wang Date: Fri, 4 Jan 2019 15:56:04 +0800 Subject: [PATCH] Fix KW P1 related issues Change-Id: Ifc3cb9dcabf2e07439fd596b5ad33b46ea562b3d CRs-fixed: 2375836 --- gnss/GnssAdapter.cpp | 14 ++++++++------ gnss/XtraSystemStatusObserver.cpp | 7 +++++-- utils/LocIpc.h | 2 +- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/gnss/GnssAdapter.cpp b/gnss/GnssAdapter.cpp index 016356b4..fb1c7ecc 100644 --- a/gnss/GnssAdapter.cpp +++ b/gnss/GnssAdapter.cpp @@ -1999,8 +1999,10 @@ GnssAdapter::restartSessions() } // get the LocationOptions that has the smallest interval, which should be the active one - TrackingOptions smallestIntervalOptions = {}; // size is zero until set for the first time - TrackingOptions highestPowerTrackingOptions = {}; + TrackingOptions smallestIntervalOptions; // size is zero until set for the first time + TrackingOptions highestPowerTrackingOptions; + memset(&smallestIntervalOptions, 0, sizeof(smallestIntervalOptions)); + memset(&highestPowerTrackingOptions, 0, sizeof(highestPowerTrackingOptions)); for (auto it = mTrackingSessions.begin(); it != mTrackingSessions.end(); ++it) { // size of zero means we havent set it yet if (0 == smallestIntervalOptions.size || @@ -3022,8 +3024,8 @@ GnssAdapter::reportPosition(const UlpLocation& ulpLocation, loc_nmea_generate_pos(ulpLocation, locationExtended, mLocSystemInfo, generate_nmea, nmeaArraystr); stringstream ss; - for (auto sentence : nmeaArraystr) { - ss << sentence; + for (auto itor = nmeaArraystr.begin(); itor != nmeaArraystr.end(); ++itor) { + ss << *itor; } string s = ss.str(); reportNmea(s.c_str(), s.length()); @@ -3118,8 +3120,8 @@ GnssAdapter::reportSv(GnssSvNotification& svNotify) std::vector nmeaArraystr; loc_nmea_generate_sv(svNotify, nmeaArraystr); stringstream ss; - for (auto sentence : nmeaArraystr) { - ss << sentence; + for (auto itor = nmeaArraystr.begin(); itor != nmeaArraystr.end(); ++itor) { + ss << *itor; } string s = ss.str(); reportNmea(s.c_str(), s.length()); diff --git a/gnss/XtraSystemStatusObserver.cpp b/gnss/XtraSystemStatusObserver.cpp index 6df54800..d84ae424 100644 --- a/gnss/XtraSystemStatusObserver.cpp +++ b/gnss/XtraSystemStatusObserver.cpp @@ -219,8 +219,11 @@ void XtraSystemStatusObserver::notify(const list& dlist) } inline ~HandleOsObserverUpdateMsg() { - for (auto each : mDataItemList) { - delete each; + for (auto itor = mDataItemList.begin(); itor != mDataItemList.end(); ++itor) { + if (*itor != nullptr) { + delete *itor; + *itor = nullptr; + } } } diff --git a/utils/LocIpc.h b/utils/LocIpc.h index a1a994d1..62309e78 100644 --- a/utils/LocIpc.h +++ b/utils/LocIpc.h @@ -106,7 +106,7 @@ public: // This class hides generated fd and destination address object from user. inline LocIpcSender(const char* destSocket): LocIpcSender(std::make_shared(::socket(AF_UNIX, SOCK_DGRAM, 0)), destSocket) { - if (-1 == *mSocket) { + if (mSocket != nullptr && -1 == *mSocket) { mSocket = nullptr; } }