Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8fdfd2b9 authored by Soonil Nagarkar's avatar Soonil Nagarkar
Browse files

Fix divide by zero error in batching

Divide by zero error would result in batching being enabled even when
inappropriate.

Bug: 174469671
Test: manual
Change-Id: I972b9826689d35c98a1dd9fee7a61f5b2df1151d
parent 1681b437
Loading
Loading
Loading
Loading
+7 −11
Original line number Diff line number Diff line
@@ -985,21 +985,17 @@ public class GnssLocationProvider extends AbstractLocationProvider implements
            // update client uids
            updateClientUids(mProviderRequest.getWorkSource());

            if (mProviderRequest.getIntervalMillis() <= Integer.MAX_VALUE) {
                mFixInterval = (int) mProviderRequest.getIntervalMillis();
            // check for overflow
            if (mFixInterval != mProviderRequest.getIntervalMillis()) {
            } else {
                Log.w(TAG, "interval overflow: " + mProviderRequest.getIntervalMillis());
                mFixInterval = Integer.MAX_VALUE;
            }
            // requested batch size, or zero to disable batching
            int batchSize;
            try {
                batchSize = mBatchingEnabled ? Math.toIntExact(
                        mProviderRequest.getMaxUpdateDelayMillis() / mFixInterval) : 0;
            } catch (ArithmeticException e) {
                batchSize = Integer.MAX_VALUE;
            }

            // requested batch size, or zero to disable batching
            long batchSize =
                    mBatchingEnabled ? mProviderRequest.getMaxUpdateDelayMillis() / Math.max(
                            mFixInterval, 1) : 0;
            if (batchSize < getBatchSize()) {
                batchSize = 0;
            }