diff options
author | Svet Ganov <svetoslavganov@google.com> | 2015-04-22 20:44:19 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-04-22 20:44:20 +0000 |
commit | db30ac84b6bcfb33aea0443e847653f7ad876761 (patch) | |
tree | e41b2fc4f3030c82d21d1be40856ce84faba91b6 | |
parent | 3797a788dc187cdffbdc034a1d4f9791432dac67 (diff) | |
parent | ba0821ed3bc2536be02df1ae850619b111cbd6f4 (diff) | |
download | frameworks_base-db30ac84b6bcfb33aea0443e847653f7ad876761.zip frameworks_base-db30ac84b6bcfb33aea0443e847653f7ad876761.tar.gz frameworks_base-db30ac84b6bcfb33aea0443e847653f7ad876761.tar.bz2 |
Merge "Make read/write from/to XML persistent state more robust."
-rw-r--r-- | packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java | 11 | ||||
-rw-r--r-- | services/core/java/com/android/server/pm/Settings.java | 12 |
2 files changed, 15 insertions, 8 deletions
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java index c7092b3..0385d1e 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java @@ -383,8 +383,9 @@ final class SettingsState { Slog.i(LOG_TAG, "[PERSIST END]"); } - } catch (IOException e) { - Slog.wtf(LOG_TAG, "Failed to write settings, restoring backup", e); + // Any error while writing is fatal. + } catch (Throwable t) { + Slog.wtf(LOG_TAG, "Failed to write settings, restoring backup", t); destination.failWrite(out); } finally { IoUtils.closeQuietly(out); @@ -406,9 +407,11 @@ final class SettingsState { XmlPullParser parser = Xml.newPullParser(); parser.setInput(in, null); parseStateLocked(parser); - } catch (XmlPullParserException | IOException ise) { + + // Any error while parsing is fatal. + } catch (Throwable t) { throw new IllegalStateException("Failed parsing settings file: " - + mStatePersistFile , ise); + + mStatePersistFile , t); } finally { IoUtils.closeQuietly(in); } diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java index f3fdb0d..b3aa966 100644 --- a/services/core/java/com/android/server/pm/Settings.java +++ b/services/core/java/com/android/server/pm/Settings.java @@ -4269,9 +4269,11 @@ final class Settings { serializer.endTag(null, TAG_RUNTIME_PERMISSIONS); serializer.endDocument(); destination.finishWrite(out); - } catch (IOException e) { + + // Any error while writing is fatal. + } catch (Throwable t) { Slog.wtf(PackageManagerService.TAG, - "Failed to write settings, restoring backup", e); + "Failed to write settings, restoring backup", t); destination.failWrite(out); } finally { IoUtils.closeQuietly(out); @@ -4319,9 +4321,11 @@ final class Settings { XmlPullParser parser = Xml.newPullParser(); parser.setInput(in, null); parseRuntimePermissionsLPr(parser, userId); - } catch (XmlPullParserException | IOException ise) { + + // Any error while parsing is fatal. + } catch (Throwable t) { throw new IllegalStateException("Failed parsing permissions file: " - + permissionsFile , ise); + + permissionsFile , t); } finally { IoUtils.closeQuietly(in); } |