Conditional Jump при передаче массива из функции

Рейтинг: 0Ответов: 0Опубликовано: 16.05.2023
``` 
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;
}

Ответы

Ответов пока нет.