From 982ab8f4bf8b20ec9814768caa2b0a11b269c812 Mon Sep 17 00:00:00 2001 From: Joseph Mirabel <jmirabel@laas.fr> Date: Tue, 25 Feb 2020 14:08:27 +0100 Subject: [PATCH] [TracerRealTime] Fix addSignalToTrace for exception handling --- src/traces/tracer.cpp | 5 +++-- tests/debug-real-time-tracer.cpp | 11 ++++++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/traces/tracer.cpp b/src/traces/tracer.cpp index 9f6dfb9..99dadd7 100644 --- a/src/traces/tracer.cpp +++ b/src/traces/tracer.cpp @@ -88,11 +88,12 @@ Tracer::Tracer(const std::string n) void Tracer::addSignalToTrace(const SignalBase<int> &sig, const string &filename) { dgDEBUGIN(15); + // openFile may throw so it should be called first. + if (namesSet) + openFile(sig, filename); toTraceSignals.push_back(&sig); dgDEBUGF(15, "%p", &sig); names.push_back(filename); - if (namesSet) - openFile(sig, filename); triger.addDependency(sig); dgDEBUGOUT(15); } diff --git a/tests/debug-real-time-tracer.cpp b/tests/debug-real-time-tracer.cpp index 60d8ce0..b1de9db 100644 --- a/tests/debug-real-time-tracer.cpp +++ b/tests/debug-real-time-tracer.cpp @@ -65,11 +65,16 @@ BOOST_AUTO_TEST_CASE(test_tracer) { std::string basename("my-tracer"); std::string suffix(".dat"); - /// Test openfiles atracer.setBufferSize(1<<14); - atracer.openFiles(rootdir, basename, suffix); - /// Add trace by name + // Check that an exception is thrown if the filename is invalid. + atracer.openFiles(rootdir, "invalid/filename", suffix); + BOOST_CHECK_THROW(atracer.addSignalToTraceByName("my-entity.out_double", "output"), + ExceptionTraces); + + // Test openfiles + atracer.openFiles(rootdir, basename, suffix); + // Add trace by name atracer.addSignalToTraceByName("my-entity.out_double", "output"); /// Add trace by name -- GitLab