summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Charles Tsai <charles_tsai@htc.com> 2015-05-20 18:16:48 +0800
committer Charles Tsai <charles_tsai@htc.com> 2015-06-04 17:14:03 +0800
commitcdaaeeec0dadbe38ed069da0eb4b1532cd620f3f (patch)
tree5778386461e2372aaac331c76dfe8a67f44dfa19
parentbf17375e5e6195122ee24295cf05f012822711ec (diff)
Fix overflow/underflow problem in comparison
Here's overflow/underflow problem in comparators. "when1 - when2" may suffer in overflow/underflow condition. Comparing them directly can avoid this problem. Change-Id: Id46af3db2adac90654210182d26ade1986ee0661
-rw-r--r--services/core/java/com/android/server/AlarmManagerService.java8
1 files changed, 4 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/AlarmManagerService.java b/services/core/java/com/android/server/AlarmManagerService.java
index 8adfcc402275..fa906f7e4d58 100644
--- a/services/core/java/com/android/server/AlarmManagerService.java
+++ b/services/core/java/com/android/server/AlarmManagerService.java
@@ -369,10 +369,10 @@ class AlarmManagerService extends SystemService {
public int compare(Batch b1, Batch b2) {
long when1 = b1.start;
long when2 = b2.start;
- if (when1 - when2 > 0) {
+ if (when1 > when2) {
return 1;
}
- if (when1 - when2 < 0) {
+ if (when1 < when2) {
return -1;
}
return 0;
@@ -1482,10 +1482,10 @@ class AlarmManagerService extends SystemService {
public int compare(Alarm a1, Alarm a2) {
long when1 = a1.whenElapsed;
long when2 = a2.whenElapsed;
- if (when1 - when2 > 0) {
+ if (when1 > when2) {
return 1;
}
- if (when1 - when2 < 0) {
+ if (when1 < when2) {
return -1;
}
return 0;