From b1afd82d6b5bd62c6bfaf50c1f4cc07ce158fd9d Mon Sep 17 00:00:00 2001 From: ice0 Date: Sep 25 2019 12:23:56 +0000 Subject: Fixed bunch of "pass by value errors" --- diff --git a/synfig-core/src/synfig/cairoimporter.cpp b/synfig-core/src/synfig/cairoimporter.cpp index d7602b5..b49fa6f 100644 --- a/synfig-core/src/synfig/cairoimporter.cpp +++ b/synfig-core/src/synfig/cairoimporter.cpp @@ -127,7 +127,7 @@ CairoImporter::open(const FileSystem::Identifier &identifier) (*__open_cairoimporters)[identifier]=importer; return importer; } - catch (String str) + catch (const String& str) { synfig::error(str); } diff --git a/synfig-core/src/synfig/color/color.cpp b/synfig-core/src/synfig/color/color.cpp index fee49f6..6023ce9 100644 --- a/synfig-core/src/synfig/color/color.cpp +++ b/synfig-core/src/synfig/color/color.cpp @@ -38,6 +38,7 @@ #include #include #include +#include #include "colorblendingfunctions.h" @@ -110,9 +111,9 @@ Color::set_hex(String& str) r_ = r; g_ = g; b_ = b; } } - catch (string s) + catch (const string& s) { - printf("caught <%s>\n", s.c_str()); + synfig::warning("caught <%s>\n", s.c_str()); return; } } @@ -122,7 +123,7 @@ Color::get_string(void)const { std::ostringstream o; o << std::fixed << std::setprecision(3) << "#" << get_hex().c_str() << " : " << std::setw(6) << a_; - return String(o.str().c_str()); + return String(o.str()); } Color diff --git a/synfig-core/src/synfig/color/color.h b/synfig-core/src/synfig/color/color.h index 6838261..70b8e34 100644 --- a/synfig-core/src/synfig/color/color.h +++ b/synfig-core/src/synfig/color/color.h @@ -322,7 +322,7 @@ public: }; /* Other */ - static Color blend(Color a, Color b,float amount,BlendMethod type=BLEND_COMPOSITE); + static Color blend(Color a, Color b, float amount, BlendMethod type=BLEND_COMPOSITE); static bool is_onto(BlendMethod x) { return BLEND_METHODS_ONTO & (1 << x); } diff --git a/synfig-core/src/synfig/target_cairo_tile.cpp b/synfig-core/src/synfig/target_cairo_tile.cpp index c599c7b..89df030 100644 --- a/synfig-core/src/synfig/target_cairo_tile.cpp +++ b/synfig-core/src/synfig/target_cairo_tile.cpp @@ -260,17 +260,17 @@ synfig::Target_Cairo_Tile::render(ProgressCallback *cb) end_frame(); }while(frames); } - catch(String str) + catch (const String& str) { - if(cb)cb->error(_("Caught string :")+str); + if (cb) cb->error(_("Caught string :")+str); return false; } - catch(std::bad_alloc&) + catch (std::bad_alloc&) { if(cb)cb->error(_("Ran out of memory (Probably a bug)")); return false; } - catch(...) + catch (...) { if(cb)cb->error(_("Caught unknown error, rethrowing...")); throw; diff --git a/synfig-core/src/synfig/target_null.h b/synfig-core/src/synfig/target_null.h index 5fed615..e457903 100644 --- a/synfig-core/src/synfig/target_null.h +++ b/synfig-core/src/synfig/target_null.h @@ -45,16 +45,23 @@ class Target_Null : public Target_Scanline { Color *buffer; - Target_Null():buffer(0) { } + Target_Null():buffer(nullptr) { } public: ~Target_Null() { delete buffer; } - virtual bool start_frame(ProgressCallback */*cb*/=NULL) - { delete buffer; buffer=new Color[desc.get_w()*sizeof(Color)]; return true; } - - virtual void end_frame() { delete buffer; buffer=0; return; } + virtual bool start_frame(ProgressCallback */*cb*/=NULL) { + if (buffer) delete[] buffer; + buffer = new Color[desc.get_w()*sizeof(Color)]; + return true; + } + + virtual void end_frame() { + if (buffer) delete[] buffer; + buffer = nullptr; + return; + } virtual Color * start_scanline(int /*scanline*/) { return buffer; } diff --git a/synfig-core/src/synfig/target_scanline.cpp b/synfig-core/src/synfig/target_scanline.cpp index 1f64819..91fa317 100644 --- a/synfig-core/src/synfig/target_scanline.cpp +++ b/synfig-core/src/synfig/target_scanline.cpp @@ -479,17 +479,17 @@ synfig::Target_Scanline::render(ProgressCallback *cb) } } - catch(String str) + catch(const String& str) { - if(cb)cb->error(_("Caught string :")+str); + if (cb) cb->error(_("Caught string :")+str); return false; } - catch(std::bad_alloc&) + catch (std::bad_alloc&) { - if(cb)cb->error(_("Ran out of memory (Probably a bug)")); + if (cb) cb->error(_("Ran out of memory (Probably a bug)")); return false; } - catch(...) + catch (...) { if(cb)cb->error(_("Caught unknown error, rethrowing...")); throw; diff --git a/synfig-core/src/synfig/target_tile.cpp b/synfig-core/src/synfig/target_tile.cpp index 6a843ec..8c1b1a1 100644 --- a/synfig-core/src/synfig/target_tile.cpp +++ b/synfig-core/src/synfig/target_tile.cpp @@ -454,19 +454,19 @@ synfig::Target_Tile::render(ProgressCallback *cb) } } - catch(String str) + catch (const String& str) { - if(cb)cb->error(_("Caught string :")+str); + if (cb) cb->error(_("Caught string :")+str); return false; } - catch(std::bad_alloc&) + catch (std::bad_alloc&) { - if(cb)cb->error(_("Ran out of memory (Probably a bug)")); + if (cb) cb->error(_("Ran out of memory (Probably a bug)")); return false; } catch(...) { - if(cb)cb->error(_("Caught unknown error, rethrowing...")); + if (cb) cb->error(_("Caught unknown error, rethrowing...")); throw; } return true; diff --git a/synfig-studio/src/gui/actionmanagers/layeractionmanager.cpp b/synfig-studio/src/gui/actionmanagers/layeractionmanager.cpp index 2fa8534..b7995f3 100644 --- a/synfig-studio/src/gui/actionmanagers/layeractionmanager.cpp +++ b/synfig-studio/src/gui/actionmanagers/layeractionmanager.cpp @@ -483,7 +483,7 @@ LayerActionManager::export_dup_nodes(synfig::Layer::Handle layer, Canvas::Handle { canvas->find_value_node(name, true); } - catch (Exception::IDNotFound x) + catch (const Exception::IDNotFound& x) { get_canvas_interface()->add_value_node(layer->dynamic_param_list().find("index")->second, name); break; diff --git a/synfig-studio/src/gui/cellrenderer/cellrenderer_timetrack.h b/synfig-studio/src/gui/cellrenderer/cellrenderer_timetrack.h index abee798..376c00b 100644 --- a/synfig-studio/src/gui/cellrenderer/cellrenderer_timetrack.h +++ b/synfig-studio/src/gui/cellrenderer/cellrenderer_timetrack.h @@ -96,7 +96,7 @@ private: //! Signal for when the user clicks on a waypoint sigc::signal&, const synfig::Time&, const synfig::Time&, const synfig::Time&, int> signal_waypoint_clicked_cellrenderer_; - sigc::signal signal_waypoint_changed_; + sigc::signal signal_waypoint_changed_; /* -- ** -- P R O P E R T Y I N T E R F A C E S ------------------------------- @@ -113,7 +113,7 @@ public: sigc::signal&, const synfig::Time&, const synfig::Time&, const synfig::Time&, int>& signal_waypoint_clicked_cellrenderer() { return signal_waypoint_clicked_cellrenderer_; } - sigc::signal& signal_waypoint_changed() + sigc::signal& signal_waypoint_changed() { return signal_waypoint_changed_; } /* diff --git a/synfig-studio/src/gui/duckmatic.cpp b/synfig-studio/src/gui/duckmatic.cpp index d1f178c..05332fb 100644 --- a/synfig-studio/src/gui/duckmatic.cpp +++ b/synfig-studio/src/gui/duckmatic.cpp @@ -974,9 +974,10 @@ Duckmatic::signal_edited_selected_ducks(bool moving) if (!moving || (*iter)->get_edit_immediatelly()) signal_edited_duck(*iter); } - catch (String) + catch (const String&) { selected_ducks=old_set; + synfig::warning("signals must not throw exceptions"); // signals must not throw exceptions!!! //throw; } diff --git a/synfig-studio/src/gui/states/state_bline.cpp b/synfig-studio/src/gui/states/state_bline.cpp index c8924c1..e718142 100644 --- a/synfig-studio/src/gui/states/state_bline.cpp +++ b/synfig-studio/src/gui/states/state_bline.cpp @@ -772,7 +772,7 @@ StateBLine_Context::run() { success=run_(); } - catch(String s) + catch (const String& s) { err=s; } diff --git a/synfig-studio/src/gui/trees/canvastreestore.cpp b/synfig-studio/src/gui/trees/canvastreestore.cpp index 6b7933a..25f9347 100644 --- a/synfig-studio/src/gui/trees/canvastreestore.cpp +++ b/synfig-studio/src/gui/trees/canvastreestore.cpp @@ -559,7 +559,7 @@ CanvasTreeStore::set_row(Gtk::TreeRow row,synfigapp::ValueDesc value_desc, bool return; } } - catch(synfig::Exception::IDNotFound x) + catch (const synfig::Exception::IDNotFound& x) { synfig::error(__FILE__":%d: IDNotFound thrown",__LINE__); erase(row); diff --git a/synfig-studio/src/gui/workarearenderer/renderer_timecode.cpp b/synfig-studio/src/gui/workarearenderer/renderer_timecode.cpp index c926ac1..2489d53 100644 --- a/synfig-studio/src/gui/workarearenderer/renderer_timecode.cpp +++ b/synfig-studio/src/gui/workarearenderer/renderer_timecode.cpp @@ -114,12 +114,12 @@ Renderer_Timecode::render_vfunc( get_work_area()->timecode_width = int(w*1.0/Pango::SCALE); get_work_area()->timecode_height = int(h*1.0/Pango::SCALE); } - catch(synfig::Exception::NotFound) + catch (const synfig::Exception::NotFound&) { get_work_area()->timecode_width = get_work_area()->timecode_height = 0; return; } - catch(...) { + catch (...) { assert(0); } diff --git a/synfig-studio/src/synfigapp/action_system.cpp b/synfig-studio/src/synfigapp/action_system.cpp index 0a70bf3..1fe2cc5 100644 --- a/synfig-studio/src/synfigapp/action_system.cpp +++ b/synfig-studio/src/synfigapp/action_system.cpp @@ -128,7 +128,7 @@ Action::System::perform_action(etl::handle action) // Perform the action try { action->perform(); } - catch(Action::Error err) { + catch (const Action::Error& err) { uim->task(action->get_local_name()+' '+_("Failed")); if (err.get_type() != Action::Error::TYPE_UNABLE) { if (err.get_desc().empty()) @@ -139,7 +139,7 @@ Action::System::perform_action(etl::handle action) // If action failed for whatever reason, just return false and do // not add the action onto the list return false; - } catch(std::exception& err) { + } catch (std::exception& err) { uim->task(action->get_local_name() + ' ' + _("Failed")); uim->error(action->get_local_name() + ": " + err.what()); // If action failed for whatever reason, just return false and do @@ -259,7 +259,7 @@ Action::System::redo_(etl::handle uim) most_recent_action_name_ = action->get_name(); try { if(action->is_active()) action->perform(); } - catch(Action::Error err) { + catch (const Action::Error& err) { if (err.get_type() != Action::Error::TYPE_UNABLE) { if(err.get_desc().empty()) uim->error(action->get_local_name() + _(" (Redo): ") + etl::strprintf("%d", err.get_type())); @@ -267,7 +267,7 @@ Action::System::redo_(etl::handle uim) uim->error(action->get_local_name() + _(" (Redo): ") + err.get_desc()); } return false; - } catch(std::runtime_error &x) { + } catch (const std::runtime_error &x) { uim->error(x.what()); return false; } catch(...) { diff --git a/synfig-studio/src/synfigapp/actions/activepointadd.cpp b/synfig-studio/src/synfigapp/actions/activepointadd.cpp index 489308d..4cb0df0 100644 --- a/synfig-studio/src/synfigapp/actions/activepointadd.cpp +++ b/synfig-studio/src/synfigapp/actions/activepointadd.cpp @@ -178,10 +178,10 @@ void Action::ActivepointAdd::perform() { try { value_node->list[index].find(activepoint.get_time()); throw Error(_("A Activepoint already exists at this point in time"));} - catch(synfig::Exception::NotFound) { } + catch (const synfig::Exception::NotFound&) { } try { if(value_node->list[index].find(activepoint)!=value_node->list[index].timing_info.end()) throw Error(_("This activepoint is already in the ValueNode"));} - catch(synfig::Exception::NotFound) { } + catch (const synfig::Exception::NotFound&) { } value_node->list[index].add(activepoint); value_node->changed(); diff --git a/synfig-studio/src/synfigapp/actions/activepointremove.cpp b/synfig-studio/src/synfigapp/actions/activepointremove.cpp index e91c39b..7de340c 100644 --- a/synfig-studio/src/synfigapp/actions/activepointremove.cpp +++ b/synfig-studio/src/synfigapp/actions/activepointremove.cpp @@ -142,7 +142,7 @@ Action::ActivepointRemove::perform() ValueNode_DynamicList::ListEntry::ActivepointList::iterator iter; try { iter=value_node->list[index].find(activepoint); } - catch(synfig::Exception::NotFound) + catch (const synfig::Exception::NotFound&) { throw Error(_("Unable to find activepoint")); } @@ -164,10 +164,10 @@ void Action::ActivepointRemove::undo() { try { value_node->list[index].find(activepoint.get_time()); throw Error(_("A Activepoint already exists at this point in time"));} - catch(synfig::Exception::NotFound) { } + catch (const synfig::Exception::NotFound&) { } try { if(value_node->list[index].find(activepoint)!=value_node->list[index].timing_info.end()) throw Error(_("This activepoint is already in the ValueNode"));} - catch(synfig::Exception::NotFound) { } + catch (const synfig::Exception::NotFound&) { } value_node->list[index].add(activepoint); value_node->changed(); diff --git a/synfig-studio/src/synfigapp/actions/activepointset.cpp b/synfig-studio/src/synfigapp/actions/activepointset.cpp index b061aa6..bf0f79e 100644 --- a/synfig-studio/src/synfigapp/actions/activepointset.cpp +++ b/synfig-studio/src/synfigapp/actions/activepointset.cpp @@ -150,7 +150,7 @@ Action::ActivepointSet::perform() for(; i != end; ++i) { try { iters.push_back(value_node->list[index].find(*i)); } - catch(synfig::Exception::NotFound) + catch (const synfig::Exception::NotFound&) { throw Error(_("Unable to find activepoint")); } @@ -254,7 +254,7 @@ Action::ActivepointSet::undo() for(; i != end; ++i) { try { iter = value_node->list[index].find(*i); } - catch(synfig::Exception::NotFound) + catch (const synfig::Exception::NotFound&) { throw Error(_("Unable to find activepoint")); } diff --git a/synfig-studio/src/synfigapp/actions/activepointsetsmart.cpp b/synfig-studio/src/synfigapp/actions/activepointsetsmart.cpp index b0248b0..1308d3b 100644 --- a/synfig-studio/src/synfigapp/actions/activepointsetsmart.cpp +++ b/synfig-studio/src/synfigapp/actions/activepointsetsmart.cpp @@ -207,7 +207,7 @@ Action::ActivepointSetSmart::enclose_activepoint(const synfig::Activepoint& acti times.insert(keyframe.get_time()); try { value_node->list[index].find(keyframe.get_time()); } - catch(synfig::Exception::NotFound) + catch (const synfig::Exception::NotFound&) { Action::Handle action(ActivepointAdd::create()); @@ -293,7 +293,7 @@ Action::ActivepointSetSmart::enclose_activepoint(const synfig::Activepoint& acti times.insert(keyframe.get_time()); try { value_node->list[index].find(keyframe.get_time()); } - catch(synfig::Exception::NotFound) + catch (const synfig::Exception::NotFound&) { Action::Handle action(ActivepointAdd::create()); diff --git a/synfig-studio/src/synfigapp/actions/layerduplicate.cpp b/synfig-studio/src/synfigapp/actions/layerduplicate.cpp index 3c0ce6e..55cebcf 100644 --- a/synfig-studio/src/synfigapp/actions/layerduplicate.cpp +++ b/synfig-studio/src/synfigapp/actions/layerduplicate.cpp @@ -183,7 +183,7 @@ Action::LayerDuplicate::export_dup_nodes(synfig::Layer::Handle layer, Canvas::Ha { canvas->find_value_node(name, true); } - catch (Exception::IDNotFound x) + catch (const Exception::IDNotFound& x) { Action::Handle action(Action::create("ValueNodeAdd")); diff --git a/synfig-studio/src/synfigapp/actions/waypointadd.cpp b/synfig-studio/src/synfigapp/actions/waypointadd.cpp index 8597eea..be5568c 100644 --- a/synfig-studio/src/synfigapp/actions/waypointadd.cpp +++ b/synfig-studio/src/synfigapp/actions/waypointadd.cpp @@ -186,10 +186,10 @@ void Action::WaypointAdd::perform() { try { value_node->find(waypoint.get_time()); throw Error(_("A Waypoint already exists at this point in time (%s)"),waypoint.get_time().get_string().c_str());} - catch(synfig::Exception::NotFound) { } + catch (const synfig::Exception::NotFound&) { } try { if(value_node->find(waypoint)!=value_node->waypoint_list().end()) throw Error(_("This waypoint is already in the ValueNode"));} - catch(synfig::Exception::NotFound) { } + catch (const synfig::Exception::NotFound&) { } value_node->add(waypoint); diff --git a/synfig-studio/src/synfigapp/actions/waypointremove.cpp b/synfig-studio/src/synfigapp/actions/waypointremove.cpp index 5e345cc..ab943bd 100644 --- a/synfig-studio/src/synfigapp/actions/waypointremove.cpp +++ b/synfig-studio/src/synfigapp/actions/waypointremove.cpp @@ -195,10 +195,10 @@ Action::WaypointRemove::undo() if(value_node->waypoint_list().size()!=0) { try { value_node->find(waypoint.get_time()); throw Error(_("A Waypoint already exists at this point in time"));} - catch(synfig::Exception::NotFound) { } + catch (const synfig::Exception::NotFound&) { } try { if(value_node->find(waypoint)!=value_node->waypoint_list().end()) throw Error(_("This waypoint is already in the ValueNode"));} - catch(synfig::Exception::NotFound) { } + catch (const synfig::Exception::NotFound&) { } } value_node->add(waypoint); diff --git a/synfig-studio/src/synfigapp/actions/waypointset.cpp b/synfig-studio/src/synfigapp/actions/waypointset.cpp index 8aec6b0..4fcbe4a 100644 --- a/synfig-studio/src/synfigapp/actions/waypointset.cpp +++ b/synfig-studio/src/synfigapp/actions/waypointset.cpp @@ -130,7 +130,7 @@ Action::WaypointSet::perform() for(; i != end; ++i) { try { iters.push_back(value_node->find(*i)); } - catch(synfig::Exception::NotFound) + catch (const synfig::Exception::NotFound&) { throw Error(_("Unable to find waypoint")); } @@ -235,7 +235,7 @@ Action::WaypointSet::undo() for(; i != end; ++i) { try { iter = value_node->find(*i); } - catch(synfig::Exception::NotFound) + catch (const synfig::Exception::NotFound&) { throw Error(_("Unable to find waypoint")); } diff --git a/synfig-studio/src/synfigapp/actions/waypointsetsmart.cpp b/synfig-studio/src/synfigapp/actions/waypointsetsmart.cpp index 6f0956b..dde5148 100644 --- a/synfig-studio/src/synfigapp/actions/waypointsetsmart.cpp +++ b/synfig-studio/src/synfigapp/actions/waypointsetsmart.cpp @@ -261,7 +261,7 @@ Action::WaypointSetSmart::enclose_waypoint(const synfig::Waypoint& waypoint) value_node->find(keyframe.get_time()); // synfig::info(__FILE__":%d: waypointtime=%s",__LINE__,value_node->find(keyframe.get_time())->get_time().get_string().c_str()); } - catch(synfig::Exception::NotFound) + catch (const synfig::Exception::NotFound&) { Action::Handle action(WaypointAdd::create()); @@ -324,7 +324,7 @@ Action::WaypointSetSmart::enclose_waypoint(const synfig::Waypoint& waypoint) //synfig::info(__FILE__":%d: waypointtime=%s",__LINE__,value_node->find(keyframe.get_time())->get_time().get_string().c_str()); } - catch(synfig::Exception::NotFound) + catch (const synfig::Exception::NotFound&) { Action::Handle action(WaypointAdd::create()); @@ -396,7 +396,9 @@ Action::WaypointSetSmart::prepare() return; } - catch(synfig::Exception::NotFound){ } catch(int){ } + //TODO(ice0): fix that + catch(const synfig::Exception::NotFound&){ } + catch(int) { } try { @@ -423,7 +425,7 @@ Action::WaypointSetSmart::prepare() return; } - catch(synfig::Exception::NotFound){ } catch(int){ } + catch(const synfig::Exception::NotFound&){ } catch(int){ } try { @@ -445,7 +447,8 @@ Action::WaypointSetSmart::prepare() return; } - catch(synfig::Exception::NotFound){ } catch(int){ } + catch (const synfig::Exception::NotFound&){ } + catch(int){ } throw Error(_("Unable to determine how to proceed. This is a bug.")); } diff --git a/synfig-studio/src/synfigapp/canvasinterface.cpp b/synfig-studio/src/synfigapp/canvasinterface.cpp index 4534f5f..be5f9c5 100644 --- a/synfig-studio/src/synfigapp/canvasinterface.cpp +++ b/synfig-studio/src/synfigapp/canvasinterface.cpp @@ -211,7 +211,7 @@ CanvasInterface::layer_create( { canvas->find_value_node(name, true); } - catch (Exception::IDNotFound x) + catch (const Exception::IDNotFound& x) { add_value_node(layer->dynamic_param_list().find("index")->second, id); break; @@ -825,12 +825,12 @@ CanvasInterface::import(const synfig::String &filename, synfig::String &errors, signal_layer_new_description()(layer,etl::basename(filename)); return true; } - catch(String x) + catch (const String& x) { get_ui_interface()->error(filename + ": " + x); return false; } - catch(...) + catch (...) { get_ui_interface()->error(_("Uncaught exception when attempting\nto open this composition -- ")+filename); return false;