From b38b33e87e0bc25837220046767d732dba4e0053 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Thu, 19 Oct 2023 20:11:39 -0500 Subject: [PATCH] Fix Sqlite memory leak All Sqlite statements must be in a try-resource block otherwise a native memory leak will occur --- .../core/sql/AbstractDhRepo.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/sql/AbstractDhRepo.java b/core/src/main/java/com/seibel/distanthorizons/core/sql/AbstractDhRepo.java index bc0684074..b7a4ee564 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/sql/AbstractDhRepo.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/sql/AbstractDhRepo.java @@ -122,9 +122,9 @@ public abstract class AbstractDhRepo } private void insert(TDTO dto) { - try + try(PreparedStatement statement = this.createInsertStatement(dto)) { - this.query(this.createInsertStatement(dto)); + this.query(statement); } catch (SQLException e) { @@ -135,9 +135,9 @@ public abstract class AbstractDhRepo } private void update(TDTO dto) { - try + try(PreparedStatement statement = this.createUpdateStatement(dto)) { - this.query(this.createUpdateStatement(dto)); + this.query(statement); } catch (SQLException e) { @@ -190,8 +190,10 @@ public abstract class AbstractDhRepo // Note: this can only handle 1 command at a time boolean resultSetPresent = statement.execute(); - ResultSet resultSet = statement.getResultSet(); - return this.parseQueryResult(resultSet, resultSetPresent); + try (ResultSet resultSet = statement.getResultSet()) + { + return this.parseQueryResult(resultSet, resultSetPresent); + } } catch(SQLException e) { @@ -212,8 +214,10 @@ public abstract class AbstractDhRepo // Note: this can only handle 1 command at a time boolean resultSetPresent = statement.execute(sql); - ResultSet resultSet = statement.getResultSet(); - return this.parseQueryResult(resultSet, resultSetPresent); + try (ResultSet resultSet = statement.getResultSet()) + { + return this.parseQueryResult(resultSet, resultSetPresent); + } } catch(SQLException e) {