void process_data_directive(struct as_tree *node, char *line) {
struct string_sep_result ssr = {0}; // Initialize ssr to avoid any uninitialized memory issues
int count = get_dir_data_val(line, &ssr);
if (count == -1) {
snprintf(node->error, sizeof(node->error), “Error: Invalid number in .data directive.”);
return;
}
// Initialize the array to zero to ensure no leftover values
memset(node->dir.operand_type.number, 0, sizeof(node->dir.operand_type.number));
int num_index = 0;
for (int i = 0; i < ssr.strings_count; i++) {
char *endptr;
long value = strtol(ssr.strings[i], &endptr, 10);
printf("num_index before adding: %dn", num_index); // Debugging output
printf("Converted value: %ldn", value); // Debugging output
if (*endptr != '') {
snprintf(node->error, sizeof(node->error), "Error: Invalid number in .data directive.");
for (int j = 0; j < ssr.strings_count; j++) {
free(ssr.strings[j]);
}
return;
}
node->dir.operand_type.number[num_index] = (int)value;
printf("Added number: %d at index %dn", node->dir.operand_type.number[num_index], num_index); // Debugging output
num_index++;
}
node->dir.operand_type.number_count = num_index;
node->ast_type = ast_dir;
node->dir.dir_type = ast_data;
// Free the strings allocated in ssr
for (int i = 0; i < ssr.strings_count; i++) {
free(ssr.strings[i]);
}
// Print final stored numbers for debugging
printf("Directive: data:");
for (int i = 0; i < node->dir.operand_type.number_count; i++) {
printf(" %d", node->dir.operand_type.number[i]);
}
printf("n");
}
Directive: data: 7 3 6 7 7 10 9
the right output would be 4 3 6 7 7 10 9 but insted seems like everytime i check the first value is just the length of the elements
the tests are fine for all of the functions :
Extracted value: 4
Checking number: 4
Valid number
Extracted value: 3
Checking number: 3
Valid number
Extracted value: 6
Checking number: 6
Valid number
Extracted value: 7
Checking number: 7
Valid number
Extracted value: 7
Checking number: 7
Valid number
Extracted value: 10
Checking number: 10
Valid number
Extracted value: 9
Checking number: 9
Valid number
num_index before adding: 0
Converted value: 4
Added number: 4 at index 0
num_index before adding: 1
Converted value: 3
Added number: 3 at index 1
num_index before adding: 2
Converted value: 6
Added number: 6 at index 2
num_index before adding: 3
Converted value: 7
Added number: 7 at index 3
num_index before adding: 4
Converted value: 7
Added number: 7 at index 4
num_index before adding: 5
Converted value: 10
Added number: 10 at index 5
num_index before adding: 6
Converted value: 9
Added number: 9 at index 6
i cant figure my head around why that is happning
lol is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.