[spatialite] Fix a bunch of leaks

This commit is contained in:
Nyall Dawson 2025-02-17 12:23:49 +10:00
parent 5c0b7d8b78
commit aa04760f80
No known key found for this signature in database
GPG Key ID: 4C61673F0BF197FC

View File

@ -792,6 +792,10 @@ void QgsSpatiaLiteProvider::loadFieldsAbstractInterface( gaiaVectorLayerPtr lyr
mPrimaryKeyAttrs << i - 1;
}
}
else
{
sqlite3_free( errMsg );
}
// check for constraints
fetchConstraints();
@ -823,7 +827,8 @@ QString QgsSpatiaLiteProvider::spatialiteVersion()
ret = sqlite3_get_table( mSqliteHandle, sql.toUtf8(), &results, &rows, &columns, &errMsg );
if ( ret != SQLITE_OK || rows != 1 )
{
QgsMessageLog::logMessage( tr( "Retrieval of spatialite version failed" ), tr( "SpatiaLite" ) );
QgsMessageLog::logMessage( tr( "Retrieval of spatialite version failed: %1" ).arg( QString( errMsg ) ), tr( "SpatiaLite" ) );
sqlite3_free( errMsg );
return QString();
}
@ -1282,6 +1287,10 @@ void QgsSpatiaLiteProvider::determineViewPrimaryKey()
}
sqlite3_free_table( results );
}
else
{
sqlite3_free( errMsg );
}
}
QStringList QgsSpatiaLiteProvider::tablePrimaryKeys( const QString &tableName ) const
@ -1337,6 +1346,11 @@ bool QgsSpatiaLiteProvider::hasTriggers()
ret = sqlite3_get_table( sqliteHandle(), sql.toUtf8().constData(), &results, &rows, &columns, &errMsg );
sqlite3_free_table( results );
if ( ret != SQLITE_OK )
{
sqlite3_free( errMsg );
}
return ( ret == SQLITE_OK && rows > 0 );
}
@ -6028,10 +6042,12 @@ bool QgsSpatiaLiteProviderMetadata::styleExists( const QString &uri, const QStri
if ( SQLITE_OK != ret )
{
QgsSqliteHandle::closeDb( handle );
QgsMessageLog::logMessage( QObject::tr( "Error executing query: %1" ).arg( countIfExist ) );
QgsMessageLog::logMessage( QObject::tr( "Error executing query %1: %2" ).arg( countIfExist ).arg( QString( errMsg ) ) );
sqlite3_free( errMsg );
errorCause = QObject::tr( "Error looking for style. The query was logged" );
return false;
}
sqlite3_free_table( results );
if ( rows == 0 )
{
// layer_styles table does not exist
@ -6058,6 +6074,7 @@ bool QgsSpatiaLiteProviderMetadata::styleExists( const QString &uri, const QStri
sqlError = errMsg;
sqlite3_free( errMsg );
}
sqlite3_free_table( results );
QgsSqliteHandle::closeDb( handle );
if ( SQLITE_OK != ret )
@ -6099,7 +6116,8 @@ bool QgsSpatiaLiteProviderMetadata::saveStyle( const QString &uri, const QString
if ( SQLITE_OK != ret )
{
QgsSqliteHandle::closeDb( handle );
QgsMessageLog::logMessage( QObject::tr( "Error executing query: %1" ).arg( countIfExist ) );
QgsMessageLog::logMessage( QObject::tr( "Error executing query %1: %2" ).arg( countIfExist ).arg( QString( errMsg ) ) );
sqlite3_free( errMsg );
errCause = QObject::tr( "Error looking for style. The query was logged" );
return false;
}
@ -6180,14 +6198,15 @@ bool QgsSpatiaLiteProviderMetadata::saveStyle( const QString &uri, const QString
if ( SQLITE_OK != ret )
{
QgsSqliteHandle::closeDb( handle );
QgsMessageLog::logMessage( QObject::tr( "Error executing query: %1" ).arg( checkQuery ) );
QgsMessageLog::logMessage( QObject::tr( "Error executing query %1: %2" ).arg( checkQuery ).arg( QString( errMsg ) ) );
sqlite3_free( errMsg );
errCause = QObject::tr( "Error looking for style. The query was logged" );
return false;
}
sqlite3_free_table( results );
if ( 0 != rows )
{
sqlite3_free_table( results );
sql = QString( "UPDATE layer_styles"
" SET useAsDefault=%1"
",styleQML=%2"
@ -6290,6 +6309,7 @@ QString QgsSpatiaLiteProviderMetadata::loadStoredStyle( const QString &uri, QStr
if ( SQLITE_OK != ret )
{
QgsSqliteHandle::closeDb( handle );
sqlite3_free( errMsg );
errCause = QObject::tr( "Error executing loading style. The query was logged" );
return QString();
}
@ -6330,6 +6350,7 @@ int QgsSpatiaLiteProviderMetadata::listStyles( const QString &uri, QStringList &
if ( SQLITE_OK != ret )
{
QgsSqliteHandle::closeDb( handle );
sqlite3_free( errMsg );
errCause = QObject::tr( "Error looking for style. The query was logged" );
return -1;
}
@ -6363,6 +6384,7 @@ int QgsSpatiaLiteProviderMetadata::listStyles( const QString &uri, QStringList &
if ( SQLITE_OK != ret )
{
QgsSqliteHandle::closeDb( handle );
sqlite3_free( errMsg );
errCause = QObject::tr( "Error loading styles. The query was logged" );
return -1;
}
@ -6388,6 +6410,7 @@ int QgsSpatiaLiteProviderMetadata::listStyles( const QString &uri, QStringList &
if ( SQLITE_OK != ret )
{
QgsSqliteHandle::closeDb( handle );
sqlite3_free( errMsg );
errCause = QObject::tr( "Error executing the select query for unrelated styles. The query was logged" );
return -1;
}
@ -6438,6 +6461,7 @@ QString QgsSpatiaLiteProviderMetadata::getStyleById( const QString &uri, const Q
else
{
QgsMessageLog::logMessage( QObject::tr( "Style with id %1 not found in %2 (Query: %3)" ).arg( styleId, sqlitePath, selectQmlQuery ) );
sqlite3_free( errMsg );
errCause = QObject::tr( "Error executing the select query. The query was logged" );
}