Buenas:
estoy teniendo un problema con el object unwinding
tengo una seccion __try __except
que usa EHsc para hacer el StackWalk.
Todo ha ido siempre bien, pero hoy he descubierto que tiene problemas con el polimorfismo.
si hago:
class CA
{
public:
CA() {}
virtual ~CA(){}
};
class CB : public CA
{
public:
CB() {}
~CB(){}
};
int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinst, LPSTR cmdline, int cmdshow)
{
__try
{
CA * a=new CB(); //aqui me da el fallo
}
__except (ExpFilter("principal",GetExceptionInformation(), GetExceptionCode(),__LINE__,__FUNCTION__)){}
return 0;
}
long _stdcall ExpFilter(char *Message,EXCEPTION_POINTERS* pExp, DWORD dwExpCode,int line,char * func)
{
GStackWalk sw;
[...] //stack walk code
return EXCEPTION_EXECUTE_HANDLER; //esto hace que acepte la excepcion , si devolvemos 0 , la gestiona windows
}
al ser CB una clase polimorfica me tira el error:
Cannot use __try in functions that require object unwinding
compilo con la opcion /EHsc para activar las excepciones estructuradas de windows, lo que hace que no pueda resolver este caso. (cualquier otro lo hace bien)
Alguien puede explicarme que ocurre?
y que es exactamente el unwinding?
gracias por adelantado