No sé exactamente cual es el error, pero sé que ese error aparece cuando intentas liberar memoria no reservada, es decir:
Código:
#include <stdlib.h>
int main()
{
int *ptr;
free(ptr);
return 0;
}
Esto debería generar el mismo error (o muy parecido), así que probablemente el puntero
pathhome queda "apuntando" a una posición que no puedes liberar.
Sea cual sea la solución que decidas usar NO hagas esto:
Cita: ...
De manera particular, casi no me gusta usar free ya que me encontraba problemas como los que mencionas, en vez de hacer eso, lo que hago es a traves de un memset limpiar el espacio de memoria que emplee para no dejar basura y despues referencio el apuntador a NULL. No se si esto te pudiera servir.
...
@Mephisto: no importa si llenas la memoria de 0's, 1's, 12354's...si está reservada previamente con malloc quedará reservada y no se podrá usar por tu programa ni por ningún otro porque además estas perdiendo la ubicación cuando asignas NULL.
Saludos