Skip to content

Commit ffe516a

Browse files
committed
fix to close bufferedReaders in CpuFreqDataModule
1 parent cf1d944 commit ffe516a

File tree

1 file changed

+25
-11
lines changed

1 file changed

+25
-11
lines changed

debugoverlay/src/main/java/com/ms_square/debugoverlay/modules/CpuFreqDataModule.java

+25-11
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,11 @@ public void run() {
5656
for (File cpuFile : cpuFiles) {
5757
double minFreq = -1f;
5858
double maxFreq = -1f;
59+
BufferedReader minFreqReader = null;
60+
BufferedReader maxFreqReader = null;
5961
try {
60-
BufferedReader minFreqReader =
61-
new BufferedReader(new FileReader(cpuFile.getAbsolutePath() + "/cpufreq/cpuinfo_min_freq"));
62-
BufferedReader maxFreqReader =
63-
new BufferedReader(new FileReader(cpuFile.getAbsolutePath() + "/cpufreq/cpuinfo_max_freq"));
62+
minFreqReader = new BufferedReader(new FileReader(cpuFile.getAbsolutePath() + "/cpufreq/cpuinfo_min_freq"));
63+
maxFreqReader = new BufferedReader(new FileReader(cpuFile.getAbsolutePath() + "/cpufreq/cpuinfo_max_freq"));
6464
minFreq = parseDouble(minFreqReader.readLine());
6565
maxFreq = parseDouble(maxFreqReader.readLine());
6666

@@ -70,6 +70,17 @@ public void run() {
7070
}
7171
} catch (IOException ie) {
7272
Log.w(TAG, "Error reading the min/max cpufreq", ie);
73+
} finally {
74+
if (minFreqReader != null) {
75+
try {
76+
minFreqReader.close();
77+
} catch (IOException ignore) {}
78+
}
79+
if (maxFreqReader != null) {
80+
try {
81+
maxFreqReader.close();
82+
} catch (IOException ignore) {}
83+
}
7384
}
7485
cachedFrequencies.put(cpuFile, new CpuFreq(cpuFile.getName(), minFreq, -1f, maxFreq));
7586
}
@@ -81,8 +92,9 @@ public void run() {
8192
for (File cpuFile : cachedFrequencies.keySet()) {
8293
CpuFreq cached = cachedFrequencies.get(cpuFile);
8394
double curFreq = -1f;
95+
BufferedReader curFreqReader = null;
8496
try {
85-
BufferedReader curFreqReader = new BufferedReader(new FileReader(cpuFile.getAbsolutePath() + "/cpufreq/scaling_cur_freq"));
97+
curFreqReader = new BufferedReader(new FileReader(cpuFile.getAbsolutePath() + "/cpufreq/scaling_cur_freq"));
8698
curFreq = parseDouble(curFreqReader.readLine());
8799

88100
if (DebugOverlay.isDebugLoggingEnabled()) {
@@ -91,6 +103,12 @@ public void run() {
91103

92104
} catch (IOException ie) {
93105
Log.w(TAG, "Error reading the current cpufreq", ie);
106+
} finally {
107+
if (curFreqReader != null) {
108+
try {
109+
curFreqReader.close();
110+
} catch (IOException ignore) {}
111+
}
94112
}
95113

96114
newCpuFreqList.add(new CpuFreq(cached.getCpuName(), cached.getMinFreq(), curFreq, cached.getMaxFreq()));
@@ -144,15 +162,11 @@ protected List<CpuFreq> getLatestData() {
144162

145163
private static File[] getCpuFiles() {
146164
File dir = new File("/sys/devices/system/cpu/");
147-
File[] files = dir.listFiles(new FileFilter() {
165+
return dir.listFiles(new FileFilter() {
148166
@Override
149167
public boolean accept(File file) {
150-
if(Pattern.matches("cpu[0-9]+", file.getName())) {
151-
return true;
152-
}
153-
return false;
168+
return Pattern.matches("cpu[0-9]+", file.getName());
154169
}
155170
});
156-
return files;
157171
}
158172
}

0 commit comments

Comments
 (0)