La función se imprime infinitamente cuando está en bucle, aunque no se llama repetidamente

Actualmente estoy tratando de resolver un problema en Hackerrank donde tengo que imprimir un patrón. Todo funciona como está previsto en este momento, excepto por la llamada de mi función de bucle repeat_numberdentro del bucle (!). Imprime números infinitamente, aunque solo debe imprimirlo un número fijo de veces.

Esto no sucede cuando llamo a la función antes de que comience el ciclo. Cuando imprimo una variable entera, también se imprime solo una vez. El error solo ocurre cuando llamo repeat_numberdentro del bucle.

¿Porqué es eso?

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

void repeat_number(int number_to_repeat, int times_to_repeat) {
    for (int e; e < times_to_repeat; e++) {
        printf("%d ", number_to_repeat);
    }
}

int main() 
{
    int n;
    scanf("%d", &n);
    // Complete the code to print the pattern.
    
    // get number of rows
    int rows = n * 2 - 1;
    int starting_number = n;
    
    // print row after row
    for (int r; r < rows; r++) {
        // count down
        for (int i = rows; i > 0; i--) {
            if (starting_number >= 1) {
                printf("%d ", starting_number);
                if (starting_number > 1) {
                    starting_number--;                
                }
                else {
                    break;
                }
            }
        }
        
        // repeat number
        repeat_number(5,1);
        
        // test 
        //int test = 2;
        //printf("%d", test);

        // count up
        for (int j = 1; j < rows; j++) {
            if (starting_number >= 1) {
                if (starting_number < n) {
                    starting_number++;                
                }
                else {
                    break;
                }
                printf("%d ", starting_number);
            }
        }
        printf("\n");
    }

    return 0;
}
Answer

Esta línea parece muy peligrosa:

for (int e; e < times_to_repeat; e++)

Yo lo reemplazaría por:

for (int e = 0; e < times_to_repeat; e++)

Porque: imagine que ese inicializa como un número muy pequeño, entonces puede tener un bucle enorme: ¡siempre inicialice sus variables!