Commits

Joshua Bartel authored 9ff67a5f9b0
LocationManagerService: Fix race when removing LocationListener In LocationManagerService if a LocationListener is removed while it has a pending broadcast the wake lock held while pending broadcasts are outstanding do not get cleared properly. There are 2 cases of this race that are fixed: 1. locationCallbackFinished was changed to check the mReceivers HashMap directly instead of calling getReceiver. getReceiver would add the ILocationListener as a new Receiver if it did not exist which caused a receiver that was removed when it still had a broadcast pending to be added back in a bad state when the pending broadcast completed. 2. removeUpdatesLocked was changed to decrement the pending broadcasts when a Receiver is removed that has pending broadcasts.