y parece que este comportamiento podría seguir en caso de necesitar más salidas de error. Esto es peligroso, en primer lugar, porque estas declaraciones se producen en el mismo scope y, por tanto, se redeclara la misma variable en varios lugares y el linker no puede continuar. Quizá lo mejor sería declarar globalmente al inicio la variable y después simplemente usarla.
Aun así, hay que tener cuidado porque tal y como la usamos ahora se puede producir un segmentation fault fácilmente, ya que el puntero está declarado pero no hay memoria reservada
En
gramatica.y
se declara varias veceschar *mensaje
cuando se tiene que dar un error.https://github.com/BraulioVM/pl/blob/ecdf13d5c7aeb9f8f286de6ff63ae31fcca90eec/compilador/gramatica.y#L147-L149
https://github.com/BraulioVM/pl/blob/ecdf13d5c7aeb9f8f286de6ff63ae31fcca90eec/compilador/gramatica.y#L209-L211
y parece que este comportamiento podría seguir en caso de necesitar más salidas de error. Esto es peligroso, en primer lugar, porque estas declaraciones se producen en el mismo scope y, por tanto, se redeclara la misma variable en varios lugares y el linker no puede continuar. Quizá lo mejor sería declarar globalmente al inicio la variable y después simplemente usarla. Aun así, hay que tener cuidado porque tal y como la usamos ahora se puede producir un segmentation fault fácilmente, ya que el puntero está declarado pero no hay memoria reservada