summaryrefslogtreecommitdiffstats
path: root/rtemstoolkit/rld-files.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'rtemstoolkit/rld-files.cpp')
-rw-r--r--rtemstoolkit/rld-files.cpp72
1 files changed, 66 insertions, 6 deletions
diff --git a/rtemstoolkit/rld-files.cpp b/rtemstoolkit/rld-files.cpp
index fdf12a6..f26aeec 100644
--- a/rtemstoolkit/rld-files.cpp
+++ b/rtemstoolkit/rld-files.cpp
@@ -256,10 +256,12 @@ namespace rld
image::~image ()
{
if (references_)
- std::cerr << "rtl:file:image: references when destructing";
+ std::cerr << "rtl:file:image: references when destructing" << std::endl;
+
if (fd_ >= 0)
{
::close (fd_);
+ fd_= -1;
if (writable && remove)
{
if (rld::verbose () >= RLD_VERBOSE_INFO)
@@ -268,6 +270,22 @@ namespace rld
::unlink (name_.path ().c_str ());
}
}
+
+ try
+ {
+ elf_.end ();
+ }
+ catch (rld::error re)
+ {
+ std::cerr << "error: rld::files::image:::~image: "
+ << re.where << ": " << re.what
+ << std::endl;
+ }
+ catch (...)
+ {
+ std::cerr << "error: rld::files::image:::~image: unhandled exception"
+ << std::endl;
+ }
}
void
@@ -537,8 +555,22 @@ namespace rld
archive::~archive ()
{
- end ();
- close ();
+ try
+ {
+ end ();
+ close ();
+ }
+ catch (rld::error re)
+ {
+ std::cerr << "error: rld::files::archive::~archive: "
+ << re.where << ": " << re.what
+ << std::endl;
+ }
+ catch (...)
+ {
+ std::cerr << "error: rld::files::archive::~archive: unhandled exception"
+ << std::endl;
+ }
}
void
@@ -960,8 +992,22 @@ namespace rld
object::~object ()
{
- end ();
- close ();
+ try
+ {
+ end ();
+ close ();
+ }
+ catch (rld::error re)
+ {
+ std::cerr << "error: rld::files::object::~object: "
+ << re.where << ": " << re.what
+ << std::endl;
+ }
+ catch (...)
+ {
+ std::cerr << "error: rld::files::object::~object: unhandled exception"
+ << std::endl;
+ }
}
void
@@ -1318,7 +1364,21 @@ namespace rld
cache::~cache ()
{
- close ();
+ try
+ {
+ close ();
+ }
+ catch (rld::error re)
+ {
+ std::cerr << "error: rld::files:cache::~cache: "
+ << re.where << ": " << re.what
+ << std::endl;
+ }
+ catch (...)
+ {
+ std::cerr << "error: rld::files::cache::~cache: unhandled exception"
+ << std::endl;
+ }
}
void