extraña falla seg, probablemente con realloc

char *dumpTB (TB tb){

    char* text = malloc(sizeof(char));

    int i = 0; // 
    int x = 0; //string index

    tNode* curr = tb->head;

    while(curr != NULL){

        while(curr->line[x] != '\n'){
            printf("%d", i);
            text[i] = curr->line[x];
            printf("%c\n", text[i]);

            text = realloc(text, i+1);

            i++;
            x++;
        }
        text[i] = '\n';
        printf("%c", text[i]);
        text = realloc(text, i+1); 
        i++;

        x = 0; 
        curr = curr->next; 
    }

    return text;
}

Así que logré imprimir las primeras 12 letras de mi cadena usando las declaraciones de impresión, pero por alguna razón me da un error de seg poco después de imprimir la letra 12 'l', y según las declaraciones de impresión parece ocurrir alrededor del realloc ... ¿Alguien puede decirme qué hice mal?

int i = 1; // 
    int x = 0; //string index

    tNode* curr = tb->head;

    while(curr != NULL){

        while(curr->line[x] != '\n'){
            printf("%d", i-1);
            text[i-1] = curr->line[x];
            printf("%c\n", text[i-1]);

            text = realloc(text, i+1);
            i++;
            x++;
        }
        printf("%d\n", i-1);
        text[i-1] = '\n';
        printf("%c", text[i-1]);
        text = realloc(text, i+1); 
        i++;

        x = 0; 
        curr = curr->next; 
        //printf("%c\n", curr->line[0]);
    }

Intenté corregir los errores de índice, una afirmación de sysmalloc de aspecto muy largo que aborta el programa.

Respuestas a la pregunta(1)

Su respuesta a la pregunta