Error relocating struct vector to add more positions

I am doing a college job where it is necessary to develop a program for shoe stock management.

When inserting the eleventh shoe the error free(): double free detected in tcache 2 occurs when executing the method realloc.

(tested on Arch Linux)

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

#define TAM_MAX_MARCA 100
#define TAM_INICIAL_LISTA 5

typedef struct ParCalcado {
    int codigo;
    char marca[TAM_MAX_MARCA];
    int numero;
    int quantidade;
    float valor;
} ParCalcado;

void imprimeMenu();
void opcaoInclusao(ParCalcado *lista);
ParCalcado leCalcado(int codigo);

int codigoAtual = 0;
int tamanhoLista = TAM_INICIAL_LISTA;
int elementosLista = 0;

int main() {
    printf("Sistema de gestão de estoque de calçados\n\n");

    ParCalcado *lista = (ParCalcado *) malloc(tamanhoLista * sizeof(ParCalcado));

    int opcao;
    do {
        imprimeMenu();

        printf("Informe a opção desejada: ");
        scanf("%d", &opcao);

        if (opcao == 1) {
            opcaoInclusao(lista);
        }
    } while (opcao != 5);

    free(lista);
    return 0;
}

void imprimeMenu() {
    printf("    1 - Inclusão de novo calçado\n");
}

void opcaoInclusao(ParCalcado *lista) {
    if (elementosLista == tamanhoLista) {
        ParCalcado *listaNova = (ParCalcado *) realloc(lista, (tamanhoLista + 5) * sizeof(ParCalcado));

        if (listaNova == NULL) {
            printf("Erro ao alocar mais espaço para a lista\n");
            return;
        }

        tamanhoLista += 5;
        lista = listaNova;
        listaNova = NULL;

        printf("Tamanho da lista aumentado para %d\n", tamanhoLista);
    }

    lista[elementosLista++] = leCalcado(++codigoAtual);
}

ParCalcado leCalcado(int codigo) {
    ParCalcado parCalcado;

    parCalcado.codigo = codigo;
    printf("\nCódigo: %d\n", codigo);
    printf("Marca: ");
    scanf("%s", parCalcado.marca);
    printf("Número: ");
    scanf("%d", &parCalcado.numero);
    printf("Quantidade: ");
    scanf("%d", &parCalcado.quantidade);
    printf("Valor: ");
    scanf("%f", &parCalcado.valor);
    printf("\n");

    return parCalcado;
}

insert the description of the image here

 0
Author: Bruno Henrique Paiva, 2020-04-07