poke-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[COMMITTED] pkl-typify: fix memory leak in


From: Jose E. Marchesi
Subject: [COMMITTED] pkl-typify: fix memory leak in
Date: Sat, 21 Sep 2024 00:31:40 +0200
User-agent: Gnus/5.13 (Gnus v5.13)

2024-09-21  Jose E. Marchesi  <jemarch@gnu.org>

        * libpoke/pkl-typify.c (pkl_typify1_ps_struct_type_field): Fix
        memory leak.
---
 ChangeLog            |  5 +++++
 libpoke/pkl-typify.c | 10 +++++-----
 2 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index d09c69f7..a462817d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2024-09-21  Jose E. Marchesi  <jemarch@gnu.org>
+
+       * libpoke/pkl-typify.c (pkl_typify1_ps_struct_type_field): Fix
+       memory leak.
+
 2024-09-20  Jose E. Marchesi  <jemarch@gnu.org>
 
        * testsuite/poke.cmd/set-oacutoff-2.pk: Escape dots in regexps.
diff --git a/libpoke/pkl-typify.c b/libpoke/pkl-typify.c
index f09cf105..f40928c2 100644
--- a/libpoke/pkl-typify.c
+++ b/libpoke/pkl-typify.c
@@ -2954,6 +2954,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_typify1_ps_struct_type_field)
      an offset<uint<64>,*>.  */
   if (elem_label)
     {
+      int promoteable_p = 0;
       pkl_ast_node label_type = PKL_AST_TYPE (elem_label);
       pkl_ast_node offset_type
         = pkl_ast_make_offset_type (PKL_PASS_AST,
@@ -2961,9 +2962,10 @@ PKL_PHASE_BEGIN_HANDLER 
(pkl_typify1_ps_struct_type_field)
                                     pkl_ast_make_integer (PKL_PASS_AST, 1),
                                     NULL /* ref_type */);
 
-
-      if (!pkl_ast_type_promoteable_p (label_type, offset_type,
-                                       1 /* promote_array_of_any */))
+      promoteable_p = pkl_ast_type_promoteable_p (label_type, offset_type,
+                                                  1 /* promote_array_of_any 
*/);
+      offset_type = ASTREF (offset_type); pkl_ast_node_free (offset_type);
+      if (!promoteable_p)
         {
           char *type_str = pkl_type_str (label_type, 1);
 
@@ -2974,8 +2976,6 @@ PKL_PHASE_BEGIN_HANDLER (pkl_typify1_ps_struct_type_field)
           free (type_str);
           PKL_PASS_ERROR;
         }
-
-      offset_type = ASTREF (offset_type); pkl_ast_node_free (offset_type);
     }
 }
 PKL_PHASE_END_HANDLER
-- 
2.30.2




reply via email to

[Prev in Thread] Current Thread [Next in Thread]