mirror of
https://github.com/postgres/postgres.git
synced 2025-07-03 20:02:46 +03:00
Fix some memory leaks associated with parsing json and manifests
Coverity complained about not freeing some memory associated with incrementally parsing backup manifests. To fix that, provide and use a new shutdown function for the JsonManifestParseIncrementalState object, in line with a suggestion from Tom Lane. While analysing the problem, I noticed a buglet in freeing memory for incremental json lexers. To fix that remove a bogus condition on freeing the memory allocated for them.
This commit is contained in:
@ -488,19 +488,18 @@ freeJsonLexContext(JsonLexContext *lex)
|
||||
if (lex->errormsg)
|
||||
destroyStringInfo(lex->errormsg);
|
||||
|
||||
if (lex->flags & JSONLEX_FREE_STRUCT)
|
||||
if (lex->incremental)
|
||||
{
|
||||
if (lex->incremental)
|
||||
{
|
||||
pfree(lex->inc_state->partial_token.data);
|
||||
pfree(lex->inc_state);
|
||||
pfree(lex->pstack->prediction);
|
||||
pfree(lex->pstack->fnames);
|
||||
pfree(lex->pstack->fnull);
|
||||
pfree(lex->pstack);
|
||||
}
|
||||
pfree(lex);
|
||||
pfree(lex->inc_state->partial_token.data);
|
||||
pfree(lex->inc_state);
|
||||
pfree(lex->pstack->prediction);
|
||||
pfree(lex->pstack->fnames);
|
||||
pfree(lex->pstack->fnull);
|
||||
pfree(lex->pstack);
|
||||
}
|
||||
|
||||
if (lex->flags & JSONLEX_FREE_STRUCT)
|
||||
pfree(lex);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user