From eb7016bede161fac256aa867103525c7955db097 Mon Sep 17 00:00:00 2001 From: David Capello Date: Wed, 12 Mar 2014 19:35:26 -0300 Subject: [PATCH] Fix crash in Editor::drawOneSpriteUnclippedRect() (issue 361) We've to catch std::bad_alloc exceptions. --- src/app/ui/editor/editor.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/app/ui/editor/editor.cpp b/src/app/ui/editor/editor.cpp index 9bcbaa694..231144ace 100644 --- a/src/app/ui/editor/editor.cpp +++ b/src/app/ui/editor/editor.cpp @@ -28,6 +28,7 @@ #include "app/commands/commands.h" #include "app/commands/params.h" #include "app/document_location.h" +#include "app/console.h" #include "app/ini_file.h" #include "app/modules/gfx.h" #include "app/modules/gui.h" @@ -385,9 +386,15 @@ void Editor::drawOneSpriteUnclippedRect(ui::Graphics* g, const gfx::Rect& rc, in RenderEngine renderEngine(m_document, m_sprite, m_layer, m_frame); // Generate the rendered image - base::UniquePtr rendered - (renderEngine.renderSprite(source_x, source_y, width, height, - m_frame, m_zoom, true)); + base::UniquePtr rendered(NULL); + try { + rendered.reset(renderEngine.renderSprite( + source_x, source_y, width, height, + m_frame, m_zoom, true)); + } + catch (const std::exception& e) { + Console::showException(e); + } if (rendered) { // Pre-render decorator.