summaryrefslogtreecommitdiff
path: root/src/wasm/wasm.cpp
diff options
context:
space:
mode:
authorBohdan <bogdan@soramitsu.co.jp>2019-03-01 01:52:49 +0200
committerAlon Zakai <alonzakai@gmail.com>2019-02-28 15:52:49 -0800
commitf59c3033e678ced61bc8c78e8ac9fbee31ef0210 (patch)
tree05a097dfa363ea156dd69cd20c6e847eb2e131ee /src/wasm/wasm.cpp
parent1a483a28bb7c58349d668ad3f54ef0e9f9607cad (diff)
downloadbinaryen-f59c3033e678ced61bc8c78e8ac9fbee31ef0210.tar.gz
binaryen-f59c3033e678ced61bc8c78e8ac9fbee31ef0210.tar.bz2
binaryen-f59c3033e678ced61bc8c78e8ac9fbee31ef0210.zip
Fix memory leaks (#1925)
Fixes #1921 Signed-off-by: Bogdan Vaneev <warchantua@gmail.com>
Diffstat (limited to 'src/wasm/wasm.cpp')
-rw-r--r--src/wasm/wasm.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/wasm/wasm.cpp b/src/wasm/wasm.cpp
index 847df5ce6..c12481760 100644
--- a/src/wasm/wasm.cpp
+++ b/src/wasm/wasm.cpp
@@ -866,6 +866,7 @@ void Module::addExport(Export* curr) {
exportsMap[curr->name] = curr;
}
+// TODO(@warchant): refactor all usages to use variant with unique_ptr
void Module::addFunction(Function* curr) {
if (!curr->name.is()) {
Fatal() << "Module::addFunction: empty name";
@@ -877,6 +878,17 @@ void Module::addFunction(Function* curr) {
functionsMap[curr->name] = curr;
}
+void Module::addFunction(std::unique_ptr<Function> curr) {
+ if (!curr->name.is()) {
+ Fatal() << "Module::addFunction: empty name";
+ }
+ if (getFunctionOrNull(curr->name)) {
+ Fatal() << "Module::addFunction: " << curr->name << " already exists";
+ }
+ functionsMap[curr->name] = curr.get();
+ functions.push_back(std::move(curr));
+}
+
void Module::addGlobal(Global* curr) {
if (!curr->name.is()) {
Fatal() << "Module::addGlobal: empty name";