Skip to content

Commit

Permalink
Merge pull request #500 from sparklemotion/flavorjones-fix-expanded-s…
Browse files Browse the repository at this point in the history
…ql-leak

fix: expanded sql leak
  • Loading branch information
flavorjones committed Feb 3, 2024
2 parents a313b9a + 979e8b2 commit 1cdaa42
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 11 deletions.
18 changes: 9 additions & 9 deletions ext/sqlite3/exception.c
Original file line number Diff line number Diff line change
Expand Up @@ -102,16 +102,16 @@ rb_sqlite3_raise(sqlite3 *db, int status)
* accepts a sqlite3 error message as the final argument, which will be `sqlite3_free`d
*/
void
rb_sqlite3_raise_msg(sqlite3 *db, int status, const char* msg)
rb_sqlite3_raise_msg(sqlite3 *db, int status, const char *msg)
{
VALUE exception;
VALUE exception;

if (status == SQLITE_OK) {
return;
}
if (status == SQLITE_OK) {
return;
}

exception = rb_exc_new2(rb_path2class("SQLite3::Exception"), msg);
sqlite3_free((void*)msg);
rb_iv_set(exception, "@code", INT2FIX(status));
rb_exc_raise(exception);
exception = rb_exc_new2(rb_path2class("SQLite3::Exception"), msg);
sqlite3_free((void *)msg);
rb_iv_set(exception, "@code", INT2FIX(status));
rb_exc_raise(exception);
}
2 changes: 1 addition & 1 deletion ext/sqlite3/exception.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
#define CHECK_MSG(_db, _status, _msg) rb_sqlite3_raise_msg(_db, _status, _msg);

void rb_sqlite3_raise(sqlite3 *db, int status);
void rb_sqlite3_raise_msg(sqlite3 *db, int status, const char* msg);
void rb_sqlite3_raise_msg(sqlite3 *db, int status, const char *msg);

#endif
9 changes: 8 additions & 1 deletion ext/sqlite3/statement.c
Original file line number Diff line number Diff line change
Expand Up @@ -622,10 +622,17 @@ static VALUE
get_expanded_sql(VALUE self)
{
sqlite3StmtRubyPtr ctx;
char *expanded_sql;
VALUE rb_expanded_sql;

TypedData_Get_Struct(self, sqlite3StmtRuby, &statement_type, ctx);
REQUIRE_OPEN_STMT(ctx);

return rb_obj_freeze(SQLITE3_UTF8_STR_NEW2(sqlite3_expanded_sql(ctx->st)));
expanded_sql = sqlite3_expanded_sql(ctx->st);
rb_expanded_sql = rb_obj_freeze(SQLITE3_UTF8_STR_NEW2(expanded_sql));
sqlite3_free(expanded_sql);

return rb_expanded_sql;
}

void
Expand Down

0 comments on commit 1cdaa42

Please sign in to comment.