Array emition fix
authorRobert Pengelly <robertapengelly@hotmail.com>
Thu, 16 Jul 2026 15:56:18 +0000 (16:56 +0100)
committerRobert Pengelly <robertapengelly@hotmail.com>
Thu, 16 Jul 2026 15:56:18 +0000 (16:56 +0100)
amd64.c
i386.c

diff --git a/amd64.c b/amd64.c
index 14633812b2973ed2d759539af135b287fe1d65b7..4a3b6f247400baa78e9e309d832abce2c983c860 100644 (file)
--- a/amd64.c
+++ b/amd64.c
@@ -14100,9 +14100,11 @@ static void emit_apply_postfix_member_access_to_reg_now (const char *reg) {
                     
                     } else {
                     
-                        emit_load_deref_reg_now (reg, subscript_elem_size);
+                        emit_load_deref_reg_ex_now (reg, subscript_elem_size, is_unsigned);
+                        
                         emit_push_reg_now (reg);
                         emit_load_assignment_rhs_expression_to_reg ("rdx");
+                        
                         emit_pop_reg_now (reg);
                         emit_assignment_binary_op (assign_op, 0);
                     
@@ -14172,9 +14174,8 @@ static void emit_apply_postfix_member_access_to_reg_now (const char *reg) {
                     postfix_member_pointer_depth--;
                 }
                 
-                if (postfix_member_pointer_depth != 0
-                    || postfix_member_size <= (DATA_PTR & 0x1f)) {
-                    emit_load_deref_reg_now (reg, subscript_elem_size);
+                if (postfix_member_pointer_depth != 0 || postfix_member_size <= (DATA_PTR & 0x1f)) {
+                    emit_load_deref_reg_ex_now (reg, subscript_elem_size, is_unsigned);
                 }
                 
                 continue;
diff --git a/i386.c b/i386.c
index 723d02b95d402c2dd9238fd3abb1b1ed15e4ba6a..da676e964078ba866a0be32c8a1aea3caf1f89cb 100644 (file)
--- a/i386.c
+++ b/i386.c
@@ -13080,9 +13080,11 @@ static void emit_apply_postfix_member_access_to_reg_now (const char *reg) {
                     
                     } else {
                     
-                        emit_load_deref_reg_now (reg, subscript_elem_size);
+                        emit_load_deref_reg_ex_now (reg, subscript_elem_size, is_unsigned);
+                        
                         emit_push_reg_now (reg);
                         emit_load_assignment_rhs_expression_to_reg ("edx");
+                        
                         emit_pop_reg_now (reg);
                         emit_assignment_binary_op (assign_op, 0);
                     
@@ -13152,9 +13154,8 @@ static void emit_apply_postfix_member_access_to_reg_now (const char *reg) {
                     postfix_member_pointer_depth--;
                 }
                 
-                if (postfix_member_pointer_depth != 0
-                    || postfix_member_size <= (DATA_PTR & 0x1f)) {
-                    emit_load_deref_reg_now (reg, subscript_elem_size);
+                if (postfix_member_pointer_depth != 0 || postfix_member_size <= (DATA_PTR & 0x1f)) {
+                    emit_load_deref_reg_ex_now (reg, subscript_elem_size, is_unsigned);
                 }
                 
                 continue;