From 1f587d1ad1e125b4c7088aefa3d9f5199b082925 Mon Sep 17 00:00:00 2001 From: Latif Khalifa Date: Fri, 1 Nov 2013 22:34:55 +0100 Subject: [PATCH] Don't crash when trying to export linked parts Fixes issue #1176 --- indra/newview/awavefront.cpp | 7 +++++++ indra/newview/daeexport.cpp | 19 +++++++++++-------- .../skins/default/xui/en-us/notifications.xml | 2 +- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/indra/newview/awavefront.cpp b/indra/newview/awavefront.cpp index 4af106c12..ee83dbb3d 100644 --- a/indra/newview/awavefront.cpp +++ b/indra/newview/awavefront.cpp @@ -275,6 +275,13 @@ namespace { if (LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection()) { + if (!selection->getFirstRootObject()) + { + if (gSavedSettings.getBOOL("OBJExportNotifyFailed")) + LLNotificationsUtil::add("ExportFailed"); + return true; + } + WavefrontSaver* wfsaver = new WavefrontSaver; // deleted in callback wfsaver->offset = -selection->getFirstRootObject()->getRenderPosition(); S32 total = 0; diff --git a/indra/newview/daeexport.cpp b/indra/newview/daeexport.cpp index 8c8aa3641..7768aa541 100644 --- a/indra/newview/daeexport.cpp +++ b/indra/newview/daeexport.cpp @@ -272,7 +272,9 @@ public: void addSelectedObjects() { - if (LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection()) + LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection(); + + if (selection && selection->getFirstRootObject()) { mSaver.mOffset = -selection->getFirstRootObject()->getRenderPosition(); mObjectName = selection->getFirstRootNode()->mName; @@ -285,14 +287,15 @@ public: if (!node->getObject()->getVolume() || !DAEExportUtil::canExportNode(node)) continue; mSaver.add(node->getObject(), node->mName); } + } - if (mSaver.mObjects.empty()) - { - LLNotificationsUtil::add("ExportFailed"); - close(); - return; - } - + if (mSaver.mObjects.empty()) + { + LLNotificationsUtil::add("ExportFailed"); + close(); + } + else + { mSaver.updateTextureInfo(); mNumTextures = mSaver.mTextures.size(); mNumExportableTextures = getNumExportableTextures(); diff --git a/indra/newview/skins/default/xui/en-us/notifications.xml b/indra/newview/skins/default/xui/en-us/notifications.xml index 1bcef0294..ec7196b58 100644 --- a/indra/newview/skins/default/xui/en-us/notifications.xml +++ b/indra/newview/skins/default/xui/en-us/notifications.xml @@ -5869,7 +5869,7 @@ Builds with extended hollow or extended hole size do not render properly on othe icon="alertmodal.tga" name="ExportFailed" type="alertmodal"> -Bad permissions for the exported object. Export aborted. +None of the selected objects are exportable. Export aborted.