I am writing a simple Shell for school assignment and stuck with a segmentation problem. Initially, my shell parses the user input to remove whitespaces and endofline character, and seperate the words inside the input line to store them in a char **args array. I can seperate the words and can print them without any problem, but when storing the words into a char **args array, and if argument number is greater than 1 and is odd, I get a segmentation error.
I know the problem is absurd, but I stuck with it. Please help me.
This is my parser code and the problem occurs in it:

char **parseInput(char *input){
int idx = 0;
char **parsed = NULL;
int parsed_idx = 0;
while(input[idx]){
    if(input[idx] == '\n'){
        break;
    }
    else if(input[idx] == ' '){
        idx++;
    }
    else{
        char *word = (char*) malloc(sizeof(char*));
        int widx = 0; // Word index
        word[widx] = input[idx];
        idx++;
        widx++;
        while(input[idx] && input[idx] != '\n' && input[idx] != ' '){
            word = (char*)realloc(word, (widx+1)*sizeof(char*));
            word[widx] = input[idx];
            idx++;
            widx++;
        }
        word = (char*)realloc(word, (widx+1)*sizeof(char*));
        word[widx] = '\0';
        printf("Word[%d] --> %s\n", parsed_idx, word);
        if(parsed == NULL){
            parsed = (char**) malloc(sizeof(char**));
            parsed[parsed_idx] = word;
            parsed_idx++;
        }else{
            parsed = (char**) realloc(parsed, (parsed_idx+1)*sizeof(char**));
            parsed[parsed_idx] = word;
            parsed_idx++;
        }
    }
}
int i = 0;
while(parsed[i] != NULL){
    printf("Parsed[%d] --> %s\n", i, parsed[i]);
    i++;
}
return parsed;
}
 
     
     
    