mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-09-28 17:11:11 -09:00
Dispose XML parser with finally
This commit is contained in:
@@ -562,14 +562,18 @@ class LibrarySymbolTable {
|
|||||||
}
|
}
|
||||||
// TODO: should consider checking version instead of last modified
|
// TODO: should consider checking version instead of last modified
|
||||||
XmlPullParser parser = XmlPullParserFactory.create(exportsFile, ERROR_HANDLER, false);
|
XmlPullParser parser = XmlPullParserFactory.create(exportsFile, ERROR_HANDLER, false);
|
||||||
XmlElement start = parser.start("LIBRARY");
|
try {
|
||||||
String path = start.getAttribute("PATH");
|
XmlElement start = parser.start("LIBRARY");
|
||||||
String dateString = start.getAttribute("DATE");
|
String path = start.getAttribute("PATH");
|
||||||
parser.dispose();
|
String dateString = start.getAttribute("DATE");
|
||||||
Date date = TIMESTAMP_FORMAT.parse(dateString);
|
Date date = TIMESTAMP_FORMAT.parse(dateString);
|
||||||
long lastModifiedSeconds = (libraryFile.lastModified() / 1000) * 1000; // file time in seconds
|
long lastModifiedSeconds = (libraryFile.lastModified() / 1000) * 1000; // file time in seconds
|
||||||
return date.equals(new Date(lastModifiedSeconds)) &&
|
return date.equals(new Date(lastModifiedSeconds)) &&
|
||||||
path.equalsIgnoreCase(libraryFile.getAbsolutePath());
|
path.equalsIgnoreCase(libraryFile.getAbsolutePath());
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
parser.dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final ErrorHandler ERROR_HANDLER = new ErrorHandler() {
|
private static final ErrorHandler ERROR_HANDLER = new ErrorHandler() {
|
||||||
|
|||||||
@@ -78,9 +78,7 @@ public class QueryOpinionService {
|
|||||||
QueryOpinionServiceHandler.read(parser);
|
QueryOpinionServiceHandler.read(parser);
|
||||||
}
|
}
|
||||||
finally {
|
finally {
|
||||||
if (parser != null) {
|
parser.dispose();
|
||||||
parser.dispose();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -149,9 +149,9 @@ public class SleighLanguage implements Language {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean isSLAWrongVersion(ResourceFile slaFile) {
|
private boolean isSLAWrongVersion(ResourceFile slaFile) {
|
||||||
|
XmlPullParser parser = null;
|
||||||
try {
|
try {
|
||||||
XmlPullParser parser = XmlPullParserFactory.create(slaFile, new ErrorHandler() {
|
parser = XmlPullParserFactory.create(slaFile, new ErrorHandler() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void warning(SAXParseException exception) throws SAXException {
|
public void warning(SAXParseException exception) throws SAXException {
|
||||||
@@ -180,6 +180,11 @@ public class SleighLanguage implements Language {
|
|||||||
catch (SAXException | IOException e) {
|
catch (SAXException | IOException e) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
finally {
|
||||||
|
if (parser != null) {
|
||||||
|
parser.dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isSLAStale(ResourceFile slaFile) {
|
private boolean isSLAStale(ResourceFile slaFile) {
|
||||||
@@ -536,20 +541,24 @@ public class SleighLanguage implements Language {
|
|||||||
private void readInitialDescription() throws SAXException, IOException {
|
private void readInitialDescription() throws SAXException, IOException {
|
||||||
ResourceFile specFile = description.getSpecFile();
|
ResourceFile specFile = description.getSpecFile();
|
||||||
XmlPullParser parser = XmlPullParserFactory.create(specFile, SPEC_ERR_HANDLER, false);
|
XmlPullParser parser = XmlPullParserFactory.create(specFile, SPEC_ERR_HANDLER, false);
|
||||||
XmlElement nextElement = parser.peek();
|
try {
|
||||||
while (nextElement != null && !nextElement.getName().equals("segmented_address")) {
|
XmlElement nextElement = parser.peek();
|
||||||
parser.next(); // skip element
|
while (nextElement != null && !nextElement.getName().equals("segmented_address")) {
|
||||||
nextElement = parser.peek();
|
parser.next(); // skip element
|
||||||
}
|
nextElement = parser.peek();
|
||||||
if (nextElement != null) {
|
}
|
||||||
XmlElement element = parser.start(); // segmented_address element
|
if (nextElement != null) {
|
||||||
segmentedspace = element.getAttribute("space");
|
XmlElement element = parser.start(); // segmented_address element
|
||||||
segmentType = element.getAttribute("type");
|
segmentedspace = element.getAttribute("space");
|
||||||
if (segmentType == null) {
|
segmentType = element.getAttribute("type");
|
||||||
segmentType = "";
|
if (segmentType == null) {
|
||||||
|
segmentType = "";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
parser.dispose();
|
finally {
|
||||||
|
parser.dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setDefaultDataSpace(String spaceName) {
|
private void setDefaultDataSpace(String spaceName) {
|
||||||
@@ -842,8 +851,12 @@ public class SleighLanguage implements Language {
|
|||||||
private void readRemainingSpecification() throws SAXException, IOException {
|
private void readRemainingSpecification() throws SAXException, IOException {
|
||||||
ResourceFile specFile = description.getSpecFile();
|
ResourceFile specFile = description.getSpecFile();
|
||||||
XmlPullParser parser = XmlPullParserFactory.create(specFile, SPEC_ERR_HANDLER, false);
|
XmlPullParser parser = XmlPullParserFactory.create(specFile, SPEC_ERR_HANDLER, false);
|
||||||
read(parser);
|
try {
|
||||||
parser.dispose();
|
read(parser);
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
parser.dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void readSpecification(final ResourceFile sleighfile)
|
private void readSpecification(final ResourceFile sleighfile)
|
||||||
@@ -865,8 +878,12 @@ public class SleighLanguage implements Language {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
XmlPullParser parser = XmlPullParserFactory.create(sleighfile, errHandler, false);
|
XmlPullParser parser = XmlPullParserFactory.create(sleighfile, errHandler, false);
|
||||||
restoreXml(parser);
|
try {
|
||||||
parser.dispose();
|
restoreXml(parser);
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
parser.dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void restoreXml(XmlPullParser parser) throws UnknownInstructionException {
|
private void restoreXml(XmlPullParser parser) throws UnknownInstructionException {
|
||||||
|
|||||||
@@ -177,8 +177,12 @@ public class SleighLanguageProvider implements LanguageProvider {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
XmlPullParser parser = XmlPullParserFactory.create(specFile, errHandler, false);
|
XmlPullParser parser = XmlPullParserFactory.create(specFile, errHandler, false);
|
||||||
read(parser, specFile.getParentFile(), specFile.getName());
|
try {
|
||||||
parser.dispose();
|
read(parser, specFile.getParentFile(), specFile.getName());
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
parser.dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void read(XmlPullParser parser, ResourceFile parentDirectory, String ldefs) {
|
private void read(XmlPullParser parser, ResourceFile parentDirectory, String ldefs) {
|
||||||
|
|||||||
Reference in New Issue
Block a user