summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2018-12-03 19:57:34 -0500
committerRyan Dahl <ry@tinyclouds.org>2018-12-03 19:34:01 -0800
commit0bec0fa594486876ff63d02e98ab454515e9c0d8 (patch)
treebe507f02396caf7f63d99a4ab0d42ff1fecc3ed6
parent9e839b7e2325e55147cc7e49ed9576cc000eaf63 (diff)
Remove leaks from snapshot_creator
-rw-r--r--.travis.yml14
-rw-r--r--libdeno/snapshot_creator.cc8
2 files changed, 13 insertions, 9 deletions
diff --git a/.travis.yml b/.travis.yml
index fc9f674b3..29ead4aad 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -93,18 +93,20 @@ script:
./tools/test_format.py
- |-
- # LSAN build of test_cc. We are in the process of getting a
- # completely clean LSAN build, but it will take some work. So for now
- # we just run a single test that passes under LSAN.
+ # LSAN build. We are in the process of getting a completely clean LSAN build,
+ # but it will take some work. So for now we just run a subset of the tests.
echo is_asan=true >> target/debug/args.gn
echo is_lsan=true >> target/debug/args.gn
- DENO_BUILD_MODE=debug ./tools/build.py -j2 test_cc
- ASAN_OPTIONS=detect_leaks=1 ./target/debug/test_cc
+ # We want to detect leaks during the build process as well as when executing
+ # the tests. So set the ASAN_OPTIONS env var before build.py is run.
+ export ASAN_OPTIONS=detect_leaks=1
+ ./tools/build.py -C target/debug -j2
+ ./target/debug/test_cc
- |-
# Release build and test
bash -c "sleep 2100; pkill ninja; pkill cargo" &
- DENO_BUILD_MODE=release ./tools/build.py -j2
+ ./tools/build.py -C target/release -j2
DENO_BUILD_MODE=release ./tools/test.py
- |-
diff --git a/libdeno/snapshot_creator.cc b/libdeno/snapshot_creator.cc
index adad025db..3f9b85d37 100644
--- a/libdeno/snapshot_creator.cc
+++ b/libdeno/snapshot_creator.cc
@@ -34,11 +34,13 @@ int main(int argc, char** argv) {
source_map_fn != nullptr ? source_map.c_str() : nullptr);
auto snapshot = deno_get_snapshot(d);
- std::string snapshot_str(reinterpret_cast<char*>(snapshot.data_ptr),
- snapshot.data_len);
std::ofstream file_(snapshot_out_bin, std::ios::binary);
- file_ << snapshot_str;
+ file_.write(reinterpret_cast<char*>(snapshot.data_ptr), snapshot.data_len);
file_.close();
+
+ delete[] snapshot.data_ptr;
+ deno_delete(d);
+
return file_.bad();
}