summaryrefslogtreecommitdiffstats
path: root/chrome/browser/sessions/session_backend.cc
diff options
context:
space:
mode:
authorjeanluc@chromium.org <jeanluc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-01-27 19:55:53 +0000
committerjeanluc@chromium.org <jeanluc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-01-27 19:55:53 +0000
commitd7935f1fd8d0836feab3c401194ec103e13e9731 (patch)
tree380b01c55564dc0d040d06bbf2156cedfe86ddce /chrome/browser/sessions/session_backend.cc
parentc6bc0bd23f6bcfbebc901bdaa1cfe5bb62cdb142 (diff)
downloadchromium_src-d7935f1fd8d0836feab3c401194ec103e13e9731.zip
chromium_src-d7935f1fd8d0836feab3c401194ec103e13e9731.tar.gz
chromium_src-d7935f1fd8d0836feab3c401194ec103e13e9731.tar.bz2
Create a Header struct to define the structure of the file header in just one place. Previously, knowledge of the format of that header was found in three places (2 in the .cc and 1 in .h).
Also, it fixes a warning/error in Visual Studio 2010. BUG=70995 TEST=session_backend_unittest Review URL: http://codereview.chromium.org/6366020 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@72867 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/sessions/session_backend.cc')
-rw-r--r--chrome/browser/sessions/session_backend.cc24
1 files changed, 16 insertions, 8 deletions
diff --git a/chrome/browser/sessions/session_backend.cc b/chrome/browser/sessions/session_backend.cc
index f5a0c39..314e427 100644
--- a/chrome/browser/sessions/session_backend.cc
+++ b/chrome/browser/sessions/session_backend.cc
@@ -21,6 +21,13 @@ static const int32 kFileSignature = 0x53534E53;
namespace {
+// The file header is the first bytes written to the file,
+// and is used to identify the file as one written by us.
+struct FileHeader {
+ int32 signature;
+ int32 version;
+};
+
// SessionFileReader ----------------------------------------------------------
// SessionFileReader is responsible for reading the set of SessionCommands that
@@ -81,13 +88,13 @@ bool SessionFileReader::Read(BaseSessionService::SessionType type,
std::vector<SessionCommand*>* commands) {
if (!file_->IsOpen())
return false;
- int32 header[2];
+ FileHeader header;
int read_count;
TimeTicks start_time = TimeTicks::Now();
read_count = file_->ReadUntilComplete(reinterpret_cast<char*>(&header),
sizeof(header));
- if (read_count != sizeof(header) || header[0] != kFileSignature ||
- header[1] != kFileCurrentVersion)
+ if (read_count != sizeof(header) || header.signature != kFileSignature ||
+ header.version != kFileCurrentVersion)
return false;
ScopedVector<SessionCommand> read_commands;
@@ -346,7 +353,8 @@ void SessionBackend::ResetFile() {
// reopening to avoid the possibility of scanners locking the file out
// from under us once we close it. If truncation fails, we'll try to
// recreate.
- if (current_session_file_->Truncate(sizeof_header()) != sizeof_header())
+ const int header_size = static_cast<int>(sizeof(FileHeader));
+ if (current_session_file_->Truncate(header_size) != header_size)
current_session_file_.reset(NULL);
}
if (!current_session_file_.get())
@@ -362,12 +370,12 @@ net::FileStream* SessionBackend::OpenAndWriteHeader(const FilePath& path) {
base::PLATFORM_FILE_EXCLUSIVE_READ);
if (!file->IsOpen())
return NULL;
- int32 header[2];
- header[0] = kFileSignature;
- header[1] = kFileCurrentVersion;
+ FileHeader header;
+ header.signature = kFileSignature;
+ header.version = kFileCurrentVersion;
int wrote = file->Write(reinterpret_cast<char*>(&header),
sizeof(header), NULL);
- if (wrote != sizeof_header())
+ if (wrote != sizeof(header))
return NULL;
return file.release();
}