1) rajouter ce qu'il faut dans
cleanup() pour qu'elle puisse être appelée à tout moment (en gros, faire que ça n'essaie pas de nettoyer ce qui n'a pas encore été initialisé) -> tu élimines le cas particulier de ton premier
if()2) Splitter en deux fonctions :
bool fonction1(void)
{
// Create the button texture (transparent) and set it as render target
m_Texture = SDL_CreateTexture(Game::get()->renderer(), px, SDL_TEXTUREACCESS_TARGET, width, height);
if (m_Texture == nullptr) return false;
if (SDL_SetTextureBlendMode(m_Texture, SDL_BLENDMODE_BLEND) != 0) return false;
if (SDL_SetRenderDrawColor(Game::get()->renderer(), 0, 0, 0, 0) != 0) return false;
if (SDL_RenderClear(Game::get()->renderer()) != 0) return false;
if (SDL_SetRenderTarget(Game::get()->renderer(), m_Texture) != 0) return false;
return true;
}
void function2(void)
{
if (!fonction1)
{
cleanup();
throw Exception(ERROR_SDL_STR);
}
}
Le principe est du C pur (et n'est pas Ximoon-compliant

), tu dois pouvoir faire ça plus élégamment en C++ avec des exceptions, mais comme c'est pas mon domaine je laisse quelqu'un d'autre proposer une meilleure solution
