diff options
Diffstat (limited to 'rtemstoolkit/rld-elf.cpp')
-rw-r--r-- | rtemstoolkit/rld-elf.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/rtemstoolkit/rld-elf.cpp b/rtemstoolkit/rld-elf.cpp index 8b2ac5e..2d3d090 100644 --- a/rtemstoolkit/rld-elf.cpp +++ b/rtemstoolkit/rld-elf.cpp @@ -421,6 +421,7 @@ namespace rld file::file () : fd_ (-1), + refs (0), archive (false), writable (false), elf_ (0), @@ -438,6 +439,18 @@ namespace rld } void + file::reference_obtain () + { + ++refs; + } + + void + file::reference_release () + { + --refs; + } + + void file::begin (const std::string& name__, int fd__, const bool writable_) { begin (name__, fd__, writable_, 0, 0); @@ -551,6 +564,9 @@ namespace rld void file::end () { + if (refs > 0) + throw rld::error ("References still held", "elf:file:end: " + name_); + if (elf_) { if (rld::verbose () >= RLD_VERBOSE_FULL_DEBUG) |