summaryrefslogtreecommitdiff
path: root/libdw/dwarf_filesrc.c
diff options
context:
space:
mode:
Diffstat (limited to 'libdw/dwarf_filesrc.c')
-rw-r--r--libdw/dwarf_filesrc.c14
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;
}