summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Gampe <agampe@google.com>2015-07-02 00:28:23 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-07-02 00:28:23 +0000
commit09af750459342eb74147fa3a97523932f6880acd (patch)
treea8ee97d8f296abb9ce3729cf21916487bc63c663
parent9d607c0e91ba1069ae811dda753ea7eac294bffa (diff)
parentb46ff2c3c24c9b45457db80494056b7792ae0edb (diff)
downloadart-09af750459342eb74147fa3a97523932f6880acd.tar.gz
art-09af750459342eb74147fa3a97523932f6880acd.tar.bz2
art-09af750459342eb74147fa3a97523932f6880acd.zip
am b46ff2c3: Merge "ART: Fix data loss when symbolizing oat files." into mnc-dev
* commit 'b46ff2c3c24c9b45457db80494056b7792ae0edb': ART: Fix data loss when symbolizing oat files.
-rw-r--r--compiler/buffered_output_stream.h1
-rw-r--r--compiler/output_stream_test.cc15
2 files changed, 10 insertions, 6 deletions
diff --git a/compiler/buffered_output_stream.h b/compiler/buffered_output_stream.h
index bbc49df6d2..15fc0335a9 100644
--- a/compiler/buffered_output_stream.h
+++ b/compiler/buffered_output_stream.h
@@ -28,6 +28,7 @@ class BufferedOutputStream FINAL : public OutputStream {
explicit BufferedOutputStream(OutputStream* out);
virtual ~BufferedOutputStream() {
+ Flush();
delete out_;
}
diff --git a/compiler/output_stream_test.cc b/compiler/output_stream_test.cc
index fbc9d0d8fc..6104ccd758 100644
--- a/compiler/output_stream_test.cc
+++ b/compiler/output_stream_test.cc
@@ -47,11 +47,12 @@ class OutputStreamTest : public CommonRuntimeTest {
CheckOffset(6);
EXPECT_TRUE(output_stream_->WriteFully(buf, 4));
CheckOffset(10);
+ EXPECT_TRUE(output_stream_->WriteFully(buf, 6));
}
void CheckTestOutput(const std::vector<uint8_t>& actual) {
uint8_t expected[] = {
- 0, 0, 1, 2, 0, 0, 1, 2, 3, 4
+ 0, 0, 1, 2, 0, 0, 1, 2, 3, 4, 1, 2, 3, 4, 5, 6
};
EXPECT_EQ(sizeof(expected), actual.size());
EXPECT_EQ(0, memcmp(expected, &actual[0], actual.size()));
@@ -75,11 +76,13 @@ TEST_F(OutputStreamTest, File) {
TEST_F(OutputStreamTest, Buffered) {
ScratchFile tmp;
- std::unique_ptr<FileOutputStream> file_output_stream(new FileOutputStream(tmp.GetFile()));
- CHECK(file_output_stream.get() != nullptr);
- BufferedOutputStream buffered_output_stream(file_output_stream.release());
- SetOutputStream(buffered_output_stream);
- GenerateTestOutput();
+ {
+ std::unique_ptr<FileOutputStream> file_output_stream(new FileOutputStream(tmp.GetFile()));
+ CHECK(file_output_stream.get() != nullptr);
+ BufferedOutputStream buffered_output_stream(file_output_stream.release());
+ SetOutputStream(buffered_output_stream);
+ GenerateTestOutput();
+ }
std::unique_ptr<File> in(OS::OpenFileForReading(tmp.GetFilename().c_str()));
EXPECT_TRUE(in.get() != nullptr);
std::vector<uint8_t> actual(in->GetLength());