diff options
author | Aryadev Chavali <aryadev@aryadevchavali.com> | 2024-12-03 04:13:40 +0000 |
---|---|---|
committer | Aryadev Chavali <aryadev@aryadevchavali.com> | 2024-12-03 04:13:40 +0000 |
commit | 6ad3e61a2b5c0629012d6db2c3bb56e55a3a567b (patch) | |
tree | cc8e7119e0b7c1a13ad288a3fe55081ad85851cc /assembler.c | |
parent | 0f0862245f0a73c589116eb401b0eeaab5c5e780 (diff) | |
download | obf-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.c | 15 |
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) |