Conditional Jump при передаче массива из функции
```
void *to_upper(const char *str){
size_t n = 1;
char *result = NULL;
result = malloc(sizeof(char) * n);
if (result != NULL){
for (size_t i = 0; i < s21_strlen(str); i++){
if (str[i] >= 97 && str[i] <= 122){
result[i] = str[i]-32;
}
else{
result[i] = str[i];
}
n++;
result = realloc(result, n);
}
}
return result;
}
```
Написал функцию выше. По функционалу все работает, но когда прогоняю через valgrind выдает "Conditional jump or move depends on uninitialised value(s)". Не понимаю совершенно как она может остаться неинициализированной(.
Применяю функцию в следующем коде:
int main(){
// upper test
printf("to_upper test\n");
char str1[] = "HelLowWorld12345!?/abcd";
char test_good[] = "HELLOWWORLD12345!?/ABCD";
char *temp = NULL;
temp = s21_to_upper(str1);
if (temp != NULL){
printf("expected result: %s\n", test_good);
printf("function result:%s\n", temp);
if (strcmp(test_good, temp) == 0){
printf("TEST SUCSESS!\n");
}
else{
printf("TEST FAIL!\n");
}
free(temp);
}
return 0;
}
Источник: Stack Overflow на русском