From d121a01d13dfcd52e8c460f04d0b6e24c0a0c70d Mon Sep 17 00:00:00 2001 From: jooyoul_lee Date: Thu, 2 Jan 2014 11:51:22 +0900 Subject: [PATCH] [Title] NullPointer exception bug fixed [Desc.] LeakDetector [Issue] --- .../dynamicanalyzer/handlers/OpenTraceHandler.java | 2 +- .../ui/summary/leaks/LeakDetector.java | 36 ++++++++++++---------- .../ui/summary/leaks/LeakTable.java | 2 +- 3 files changed, 22 insertions(+), 18 deletions(-) diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/OpenTraceHandler.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/OpenTraceHandler.java index c5496db..fbe7dea 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/OpenTraceHandler.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/OpenTraceHandler.java @@ -362,7 +362,7 @@ public class OpenTraceHandler extends AbstractHandler { } } else { leakDectector.getLeakHash() - .put(leakData.getKey(), leakData); + .put((long)leakData.getKey(), leakData); } } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/leaks/LeakDetector.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/leaks/LeakDetector.java index 6cf20a9..be75b4d 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/leaks/LeakDetector.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/leaks/LeakDetector.java @@ -44,8 +44,8 @@ public class LeakDetector { public final static int API_TYPE_CLOSE = 1; public final static int API_TYPE_REALLOC = 2; - HashMap leakHash; - HashMap childHash; + HashMap leakHash; + HashMap childHash; private int leakSeq = 0; public LeakDetector() { @@ -57,16 +57,16 @@ public class LeakDetector { return leakList; } - public HashMap getLeakHash() { + public HashMap getLeakHash() { if (null == leakHash) { - leakHash = new HashMap(); + leakHash = new HashMap(); } return leakHash; } - public HashMap getChildHash() { + public HashMap getChildHash() { if (null == childHash) { - childHash = new HashMap(); + childHash = new HashMap(); } return childHash; } @@ -142,19 +142,19 @@ public class LeakDetector { chk = LeakCheckList.getLeakCheckList().get(apiName); } - HashMap leaks = getLeakHash(); + HashMap leaks = getLeakHash(); if (chk.getApiType() == API_TYPE_OPEN) { // if (chk.isCheckUserCall()) { // checkUserFuncLeakData(logData, chk); // } else { LeakData newLeak = new LeakData(logData, this); - leaks.put(logData.getKey(), newLeak); + leaks.put((long)logData.getKey(), newLeak); // } } else if (chk.getApiType() == API_TYPE_CLOSE) { int key = log.getKey(); LeakData freeData = getChildHash().get(key); if (null != freeData) { - LeakData parent = leaks.get(freeData.getParentKey()); + LeakData parent = leaks.get((long)freeData.getParentKey()); parent.removeChild(key); getChildHash().remove(key); if (parent.getChildren().isEmpty()) { @@ -172,13 +172,17 @@ public class LeakDetector { String inputParam = ((ProbeCommonData) log).getArgs(); String[] splitInputParam = inputParam.split("\\,"); //$NON-NLS-1$ String param = new String(splitInputParam[0]); - int rmKey = -1; - if (param.contains("0x")) { - rmKey = Integer.decode(param); - } else { - rmKey = Integer.parseInt(splitInputParam[0]); + long rmKey = -1; + try { + if (param.contains("0x")) { + rmKey = Long.decode(param); + } else { + rmKey = Integer.parseInt(splitInputParam[0]); + } + leaks.remove(rmKey); + } catch (NumberFormatException e) { + e.printStackTrace(); } - leaks.remove(rmKey); // internal check // if (chk.isCheckUserCall()) { @@ -187,7 +191,7 @@ public class LeakDetector { // String key = input[chk.getKeyIndex()]; // leaks.put(key, new LeakData(key, input, this)); int key = log.getKey(); - leaks.put(key, new LeakData(log, this)); + leaks.put((long)key, new LeakData(log, this)); // } } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/leaks/LeakTable.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/leaks/LeakTable.java index 37d62a4..3f8d89f 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/leaks/LeakTable.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/leaks/LeakTable.java @@ -125,7 +125,7 @@ public class LeakTable extends DATreeComposite { @Override public List makeTreeInput() { List output = new ArrayList(); - HashMap leaks = null; + HashMap leaks = null; if (isRange) { leaks = RangeDataManager.getInstance().getLeakDetector() .getLeakHash(); -- 2.7.4