BraulioVM / pl

0 stars 0 forks source link

Redeclaración de `char *mensaje` en `gramatica.y` #18

Closed namasme closed 6 years ago

namasme commented 6 years ago

En gramatica.y se declara varias veces char *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