Merge "Close file descriptor after SmartSelection is initialized." into oc-dev

am: b950ac6b0f

Change-Id: I9ec0463e9641fb6a54e26311273932d3d1a6d41e
This commit is contained in:
Abodunrinwa Toki
2017-05-02 19:00:53 +00:00
committed by android-build-merger

View File

@@ -183,7 +183,9 @@ final class TextClassifierImpl implements TextClassifier {
}
if (mSmartSelection == null || !Objects.equals(mLocale, locale)) {
destroySmartSelectionIfExistsLocked();
mSmartSelection = new SmartSelection(getFdLocked(locale));
final ParcelFileDescriptor fd = getFdLocked(locale);
mSmartSelection = new SmartSelection(fd.getFd());
closeAndLogError(fd);
mLocale = locale;
}
return mSmartSelection;
@@ -191,7 +193,7 @@ final class TextClassifierImpl implements TextClassifier {
}
@GuardedBy("mSmartSelectionLock") // Do not call outside this lock.
private int getFdLocked(Locale locale) throws FileNotFoundException {
private ParcelFileDescriptor getFdLocked(Locale locale) throws FileNotFoundException {
ParcelFileDescriptor updateFd;
try {
updateFd = ParcelFileDescriptor.open(
@@ -214,7 +216,7 @@ final class TextClassifierImpl implements TextClassifier {
if (updateFd == null) {
if (factoryFd != null) {
return factoryFd.getFd();
return factoryFd;
} else {
throw new FileNotFoundException(
String.format("No model file found for %s", locale));
@@ -227,7 +229,7 @@ final class TextClassifierImpl implements TextClassifier {
SmartSelection.getLanguage(updateFdInt).trim().toLowerCase());
if (factoryFd == null) {
if (localeMatches) {
return updateFdInt;
return updateFd;
} else {
closeAndLogError(updateFd);
throw new FileNotFoundException(
@@ -237,18 +239,17 @@ final class TextClassifierImpl implements TextClassifier {
if (!localeMatches) {
closeAndLogError(updateFd);
return factoryFd.getFd();
return factoryFd;
}
final int updateVersion = SmartSelection.getVersion(updateFdInt);
final int factoryFdInt = factoryFd.getFd();
final int factoryVersion = SmartSelection.getVersion(factoryFdInt);
final int factoryVersion = SmartSelection.getVersion(factoryFd.getFd());
if (updateVersion > factoryVersion) {
closeAndLogError(factoryFd);
return updateFdInt;
return updateFd;
} else {
closeAndLogError(updateFd);
return factoryFdInt;
return factoryFd;
}
}