diff options
Diffstat (limited to 'libdw/dwarf_filesrc.c')
-rw-r--r-- | libdw/dwarf_filesrc.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/libdw/dwarf_filesrc.c b/libdw/dwarf_filesrc.c index b48340d4..74b3cf16 100644 --- a/libdw/dwarf_filesrc.c +++ b/libdw/dwarf_filesrc.c @@ -59,14 +59,24 @@ const char * dwarf_filesrc (Dwarf_Files *file, size_t idx, Dwarf_Word *mtime, Dwarf_Word *length) { - if (file == NULL || idx >= file->nfiles) + if (file == NULL) return NULL; + const char *retval = NULL; + rwlock_rdlock (file->dbg->lock); + + if (idx >= file->nfiles) + goto out; + if (mtime != NULL) *mtime = file->info[idx].mtime; if (length != NULL) *length = file->info[idx].length; - return file->info[idx].name; + retval = file->info[idx].name; + + out: + rwlock_unlock (file->dbg->lock); + return retval; } |