Ver Mensaje Individual
  #2 (permalink)  
Antiguo 12/10/2012, 07:53
Fw190
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 11 meses
Puntos: 73
Respuesta: strcat(char*,char*) crash!

¿El empleo de fsdefine en strcat es correcto, o es un error mecanográfico y debería ser vsdefine?

Si es correcto, habría que ver dónde se declara fsdefine y qué uso de hace de él antes de llegar a esta porción de código.

Si es un error mecanográfico, la línea correcta sería

srcat(vsdefine, glsl_source);

En tal caso, resulta que vsdefine ha sido declarado como un puntero que apunta a la cadena fija "#define COMPILING_VS\n". Al hacer el strcat, le estás añadiendo más cosas, pero ya en una zona de memoria que no pertenece a vsdefine. En resumen, estás sobreescribiendo encima de otras cosas, y no sabes qué, dónde ni cómo estás haciéndolo. En C no hay comprobación de los límites de los arreglos, eso es algo que corre por cuenta del programador. Y en este caso, aunque sea código C++, estás manejando cadenas al estilo C. La solución, en principio, es dimensionar vsdefine con un tamaño suficiente para que pueda guardar lo que le pidas.

Saludos,