aboutsummaryrefslogtreecommitdiff
path: root/assembler.c
diff options
context:
space:
mode:
authorAryadev Chavali <aryadev@aryadevchavali.com>2024-12-03 04:13:40 +0000
committerAryadev Chavali <aryadev@aryadevchavali.com>2024-12-03 04:13:40 +0000
commit6ad3e61a2b5c0629012d6db2c3bb56e55a3a567b (patch)
treecc8e7119e0b7c1a13ad288a3fe55081ad85851cc /assembler.c
parent0f0862245f0a73c589116eb401b0eeaab5c5e780 (diff)
downloadobf-6ad3e61a2b5c0629012d6db2c3bb56e55a3a567b.tar.gz
obf-6ad3e61a2b5c0629012d6db2c3bb56e55a3a567b.tar.bz2
obf-6ad3e61a2b5c0629012d6db2c3bb56e55a3a567b.zip
Fix errors due to no loops
Diffstat (limited to 'assembler.c')
-rw-r--r--assembler.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/assembler.c b/assembler.c
index 36cd2c0..df92f1e 100644
--- a/assembler.c
+++ b/assembler.c
@@ -120,12 +120,15 @@ void asm_translate_nodes(buffer_t **asm_buffer, struct PResult nodes,
const char *src_name)
{
// First pass: Setup the ASM label array
- struct Label labels[nodes.labels * 2];
- u64 label_ptr = 0;
- for (size_t i = 0; i < nodes.size; ++i)
- if (nodes.nodes[i].type == LIN || nodes.nodes[i].type == LOUT)
- labels[label_ptr++] =
- (struct Label){.cur = i, .next = nodes.nodes[i].loop_ref};
+ struct Label labels[nodes.labels ? nodes.labels * 2 : 1];
+ if (nodes.labels)
+ {
+ u64 label_ptr = 0;
+ for (size_t i = 0; i < nodes.size; ++i)
+ if (nodes.nodes[i].type == LIN || nodes.nodes[i].type == LOUT)
+ labels[label_ptr++] =
+ (struct Label){.cur = i, .next = nodes.nodes[i].loop_ref};
+ }
// Second pass: Translating to assembly
for (size_t i = 0; i < nodes.size; ++i)