From bf84010e01bb11874689ce53ea4df853b2e41c2b Mon Sep 17 00:00:00 2001
From: A404M <ahmadmahmoudiprogrammer@gmail.com>
Date: Thu, 26 Sep 2024 21:54:33 +0330
Subject: some small performance improvements

---
 src/compiler/parser/parser.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

(limited to 'src/compiler/parser')

diff --git a/src/compiler/parser/parser.c b/src/compiler/parser/parser.c
index fcee276..ee9e69b 100644
--- a/src/compiler/parser/parser.c
+++ b/src/compiler/parser/parser.c
@@ -341,13 +341,12 @@ ParserScopeMetadata *parserScope(
     }
   }
 
-  ParsedNode **operands = a404m_malloc(nodes_inserted * sizeof(ParsedNode *));
   size_t nodes_size = nodes_inserted;
   nodes_inserted = 0;
 
   ParsedNode *last = NULL;
 
-  for(size_t i = nodes_size-1;i != (typeof(i))-1;++i){
+  for (size_t i = nodes_size - 1; i != (typeof(i))-1; ++i) {
     ParsedNode *currentNode = nodes[i];
     if (currentNode->parent == parent) {
       last = currentNode;
@@ -364,15 +363,16 @@ ParserScopeMetadata *parserScope(
                    PARSED_TOKEN_STRINGS[currentNode->token]);
         goto RETURN_ERROR;
       }
-      operands[nodes_inserted] = currentNode;
+      if (nodes_inserted != i) {
+        nodes[nodes_inserted] = currentNode;
+      }
       ++nodes_inserted;
     }
   }
-  free(nodes);
 
   ParserScopeMetadata *metadata = a404m_malloc(sizeof(*metadata));
   metadata->operands =
-      a404m_realloc(operands, nodes_inserted * sizeof(ParsedNode *));
+      a404m_realloc(nodes, nodes_inserted * sizeof(ParsedNode *));
   metadata->operands_size = nodes_inserted;
 
   return metadata;
-- 
cgit v1.2.3