Commit 8e6b8f46 by Konstantin Käfer

deallocate our stuff in the destructor

parent d7cd1cd3
...@@ -157,12 +157,14 @@ const char* sqlite_code_string(int code); ...@@ -157,12 +157,14 @@ const char* sqlite_code_string(int code);
delete baton; delete baton;
#define DELETE_FIELD(field) \ #define DELETE_FIELD(field) \
switch ((field)->type) { \ if (field != NULL) { \
case SQLITE_INTEGER: delete (Values::Integer*)(field); break; \ switch ((field)->type) { \
case SQLITE_FLOAT: delete (Values::Float*)(field); break; \ case SQLITE_INTEGER: delete (Values::Integer*)(field); break; \
case SQLITE_TEXT: delete (Values::Text*)(field); break; \ case SQLITE_FLOAT: delete (Values::Float*)(field); break; \
case SQLITE_BLOB: delete (Values::Blob*)(field); break; \ case SQLITE_TEXT: delete (Values::Text*)(field); break; \
case SQLITE_NULL: delete (Values::Null*)(field); break; \ case SQLITE_BLOB: delete (Values::Blob*)(field); break; \
case SQLITE_NULL: delete (Values::Null*)(field); break; \
} \
} }
#endif #endif
......
...@@ -297,8 +297,6 @@ bool Statement::Bind(const Parameters parameters) { ...@@ -297,8 +297,6 @@ bool Statement::Bind(const Parameters parameters) {
status = sqlite3_bind_null(handle, pos); status = sqlite3_bind_null(handle, pos);
} break; } break;
} }
DELETE_FIELD(field);
} }
if (status != SQLITE_OK) { if (status != SQLITE_OK) {
......
...@@ -90,6 +90,10 @@ public: ...@@ -90,6 +90,10 @@ public:
callback = Persistent<Function>::New(cb_); callback = Persistent<Function>::New(cb_);
} }
~Baton() { ~Baton() {
for (int i = 0; i < parameters.size(); i++) {
Values::Field* field = parameters[i];
DELETE_FIELD(field);
}
stmt->Unref(); stmt->Unref();
ev_unref(EV_DEFAULT_UC); ev_unref(EV_DEFAULT_UC);
callback.Dispose(); callback.Dispose();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment