I have a linked list of "words" that I'm trying to build, I made a function called "add_to_mem" which adds to the linked list the next word. I've made a couple of checks on the code, and found out that he works twice - once when the linked list is a NULL, and once when it's not - and it is does working, but in the third time I'm calling to the method - I'm getting an "A heap has been corrupted" error. The code:
    typedef struct { unsigned int val : 14; } word;
    typedef struct machine_m
    {
    word * current;
    int line_in_memo;
    char * sign_name;
    struct machine_m * next_line;
}Machine_Memo;
The function:
    /*Adding a word to the memory.*/
void add_to_mem(word * wrd, int line, char * sign_name)
{
    Machine_Memo * temp = NULL, *next = NULL;
    if (machine_code == NULL)
    {
        machine_code = (Machine_Memo *)malloc(sizeof(Machine_Memo));
        if (machine_code == NULL)
        {
            printf("Memory allocation has failed.");
            exit(1);
        }
        machine_code->current = wrd;
        machine_code->line_in_memo = line;
        machine_code->sign_name = sign_name;
        machine_code->next_line = NULL;
    }
    else
    {
        printf("token has been reached");
        temp = machine_code;
        next = (Machine_Memo *)malloc(sizeof(Machine_Memo)); //Line of error
        if (next == NULL)
        {
            printf("MEMORY ALLOCATION HAS FAILED. EXITING PROGRAM.\nThe problem has occured on code line %d", 775);
            exit(0);
        }
        next->current = wrd;
        next->line_in_memo = line;
        next->sign_name = sign_name;
        next->next_line = NULL;
        while (temp->next_line != NULL)
        {
            temp = temp->next_line;
            temp->next_line = next;
        }
    }
}
 
     
    