diff options
author | Jakub Jelinek <jakub@redhat.com> | 2023-11-29 09:19:02 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2023-11-29 09:19:02 +0100 |
commit | 77f0e4a02df15ef4e31b144e8e4bc1a0aa76c416 (patch) | |
tree | 317a19dcb87b0925e5328541fc4cea4dc34d70b4 /gcc | |
parent | 9582538cf07d83d7e80553827de8b0f91e4705d8 (diff) | |
download | gcc-77f0e4a02df15ef4e31b144e8e4bc1a0aa76c416.zip gcc-77f0e4a02df15ef4e31b144e8e4bc1a0aa76c416.tar.gz gcc-77f0e4a02df15ef4e31b144e8e4bc1a0aa76c416.tar.bz2 |
c++: Fix a compile time memory leak in finish_static_assert
On Tue, Nov 28, 2023 at 11:31:48AM -0500, Jason Merrill wrote:
> Jonathan pointed out elsewhere that this gets leaked if error return
> prevents us from getting to the XDELETEVEC.
As there is a single error return in which it can leak, I've just added
a XDELETEVEC (buf); statement to that path rather than introducing some
RAII solution.
2023-11-29 Jakub Jelinek <jakub@redhat.com>
* semantics.cc (finish_static_assert): Free buf on error return.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/semantics.cc | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/cp/semantics.cc b/gcc/cp/semantics.cc index 3bf5864..d30a3f9 100644 --- a/gcc/cp/semantics.cc +++ b/gcc/cp/semantics.cc @@ -11582,6 +11582,7 @@ finish_static_assert (tree condition, tree message, location_t location, error_at (location, "%<static_assert%> message %<data()[%d]%> " "must be a constant expression", i); + XDELETEVEC (buf); return; } if (msg == NULL) |