Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 5 additions & 7 deletions ext/pgsql/pgsql.c
Original file line number Diff line number Diff line change
Expand Up @@ -1057,15 +1057,13 @@ PHP_FUNCTION(pg_query)

static void _php_pgsql_free_params(char **params, int num_params)
{
if (num_params > 0) {
int i;
for (i = 0; i < num_params; i++) {
if (params[i]) {
efree(params[i]);
}
int i;
for (i = 0; i < num_params; i++) {
if (params[i]) {
efree(params[i]);
}
efree(params);
}
efree(params);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

was it the "point of contention" ? in that case you can just change it place.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't understand what you mean

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if num_params == 0 then params array was never freed

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, e.g. if you exit here in the first iteration when i==0, then params is never freed:

php-src/ext/pgsql/pgsql.c

Lines 1130 to 1131 in 28ce1b0

_php_pgsql_free_params(params, i);
RETURN_THROWS();

Removing the num_params > 0 check fixes it. It is a useless check anyway: the loop will already check this and we should not do the check for freeing params.

Copy link
Member

@devnexen devnexen Oct 18, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sure what I meant originally was just putting the efree(params); out of the if block would have worked as well but that s detail.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see. That works too but since I'm touching the function anyway I thought I'd just remove the check

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes I just also saw your other PR, makes sense

}

/* Execute a query */
Expand Down
Loading