Would this fix it?

Code:
char pop(list **ptr){
    if( (*ptr)->node != NULL ){
        char tmp;
        list * temp;
        temp = malloc(sizeof(list));
        tmp = (*ptr)->node->element;
        temp->node = (*ptr)->node->node;
        free((*ptr)->node);
        (*ptr)->node = temp->node;
        free(temp);
        return tmp;
    } else {
        printf("\nMismatched pop!\n"); 
        exit(0); //Not a program error.
    }
}