Re: How to properly fix memory leak - Mailing list pgsql-general

From Igor Korot
Subject Re: How to properly fix memory leak
Date
Msg-id CA+FnnTx5QBqs2WFAu+Bznv2z73i+j8aZXGDMB0ocE=Wb6hy4eA@mail.gmail.com
Whole thread Raw
In response to How to properly fix memory leak  ("David G. Johnston" <david.g.johnston@gmail.com>)
List pgsql-general
Hi, David,

On Fri, Apr 25, 2025 at 11:55 PM David G. Johnston
<david.g.johnston@gmail.com> wrote:
>
> On Friday, April 25, 2025, Igor Korot <ikorot01@gmail.com> wrote:
>>
>>
>> And the error case was handled correctly, right?
>
>
> Seems like answering that requires knowing what the query is or can be.  I also have no idea what idiomatic code
lookslike.  Though, I’d probably use PQresultErrorMessage and check affirmatively for the tuples and error cases and
havea final else should the status be something unexpected. 

Understood.

Below is the full function:

[code]
int PostgresDatabase::PopulateTablespaces(std::vector<std::wstring> &errorMsg)
{
    int result = 0;
    std::wstring errorMessage;
    std::wstring query = L"SELECT * FROM pg_tablespace;";
    auto res = PQexec( m_db, m_pimpl->m_myconv.to_bytes( query.c_str()
).c_str() );      /* ask for binary results */
    if( PQresultStatus( res ) != PGRES_TUPLES_OK )
    {
        auto err = m_pimpl->m_myconv.from_bytes( PQerrorMessage( m_db ) );
        errorMsg.push_back( L"Update validation table: " + err );
        result = 1;
    }
    else
    {
        for( int i = 0; i < PQntuples( res ); i++ )
        {
            auto temp1 = m_pimpl->m_myconv.from_bytes( PQgetvalue(
res, i, 1 ) );
            m_tablespaces.push_back( temp1 );
        }
    }
    PQclear( res );
    return result;
}
[/code]

Thank you.

>
> David J.
>



pgsql-general by date:

Previous
From: "David G. Johnston"
Date:
Subject: How to properly fix memory leak
Next
From: Laurenz Albe
Date:
Subject: Re: How to properly fix memory leak