diff options
author | Joe Onorato <joeo@android.com> | 2009-07-28 18:23:05 -0700 |
---|---|---|
committer | Joe Onorato <joeo@android.com> | 2009-07-28 18:30:15 -0700 |
commit | 8d72569e3b85a352afe0fe1125b784d2ac13cde1 (patch) | |
tree | e90602cb7d6dddaf452e9df0bae4016ec85aafda /libs/utils | |
parent | a7e4cf9b5c9dd7d733e1ee7109ecb0e58996fe06 (diff) | |
download | frameworks_base-8d72569e3b85a352afe0fe1125b784d2ac13cde1.zip frameworks_base-8d72569e3b85a352afe0fe1125b784d2ac13cde1.tar.gz frameworks_base-8d72569e3b85a352afe0fe1125b784d2ac13cde1.tar.bz2 |
Fix the IOException in wallpaper restore -- the padding isn't required at the end.
Diffstat (limited to 'libs/utils')
-rw-r--r-- | libs/utils/BackupData.cpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/libs/utils/BackupData.cpp b/libs/utils/BackupData.cpp index be04777..c51d989 100644 --- a/libs/utils/BackupData.cpp +++ b/libs/utils/BackupData.cpp @@ -196,6 +196,7 @@ BackupDataReader::Status() } else { \ m_status = errno; \ } \ + LOGD("CHECK_SIZE failed with at line %d m_status='%s'", __LINE__, strerror(m_status)); \ return m_status; \ } \ } while(0) @@ -203,6 +204,7 @@ BackupDataReader::Status() do { \ status_t err = skip_padding(); \ if (err != NO_ERROR) { \ + LOGD("SKIP_PADDING FAILED at line %d", __LINE__); \ m_status = err; \ return err; \ } \ @@ -218,10 +220,19 @@ BackupDataReader::ReadNextHeader(bool* done, int* type) int amt; - // No error checking here, in case we're at the end of the stream. Just let read() fail. - skip_padding(); + amt = skip_padding(); + if (amt == EIO) { + *done = true; + return NO_ERROR; + } + else if (amt != NO_ERROR) { + return amt; + } amt = read(m_fd, &m_header, sizeof(m_header)); *done = m_done = (amt == 0); + if (*done) { + return NO_ERROR; + } CHECK_SIZE(amt, sizeof(m_header)); m_pos += sizeof(m_header); if (type) { |