summaryrefslogtreecommitdiffstats
path: root/libdw/dwarf_getsrclines.c
diff options
context:
space:
mode:
authorMark Wielaard <[email protected]>2015-06-09 00:31:25 +0200
committerMark Wielaard <[email protected]>2015-06-10 14:14:57 +0200
commit9e3d5c2656c993e391cc126f9e1bb921e0af4873 (patch)
tree2b941a27024515bf3fa73147dd3c91013266ea6a /libdw/dwarf_getsrclines.c
parent4b7953db48ed736ed913fd17a038c8474ce2198d (diff)
libdw: Initialize dirarray early in read_srclines.
We might jump to "out" early on error. Help gcc see that isn't an issue by initializing dirarray to dirstack early. Signed-off-by: Mark Wielaard <[email protected]>
Diffstat (limited to 'libdw/dwarf_getsrclines.c')
-rw-r--r--libdw/dwarf_getsrclines.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/libdw/dwarf_getsrclines.c b/libdw/dwarf_getsrclines.c
index ba9649a6..389c824d 100644
--- a/libdw/dwarf_getsrclines.c
+++ b/libdw/dwarf_getsrclines.c
@@ -111,6 +111,14 @@ read_srclines (Dwarf *dbg,
#define MAX_STACK_FILES (MAX_STACK_ALLOC / 4)
#define MAX_STACK_DIRS (MAX_STACK_ALLOC / 16)
+ struct dirlist
+ {
+ const char *dir;
+ size_t len;
+ };
+ struct dirlist dirstack[MAX_STACK_DIRS];
+ struct dirlist *dirarray = dirstack;
+
if (unlikely (linep + 4 > lineendp))
{
invalid_data:
@@ -186,11 +194,7 @@ read_srclines (Dwarf *dbg,
/* First comes the list of directories. Add the compilation
directory first since the index zero is used for it. */
- struct dirlist
- {
- const char *dir;
- size_t len;
- } comp_dir_elem =
+ struct dirlist comp_dir_elem =
{
.dir = comp_dir,
.len = comp_dir ? strlen (comp_dir) : 0,
@@ -209,11 +213,7 @@ read_srclines (Dwarf *dbg,
}
/* Arrange the list in array form. */
- struct dirlist dirstack[MAX_STACK_DIRS];
- struct dirlist *dirarray;
- if (ndirlist < MAX_STACK_DIRS)
- dirarray = dirstack;
- else
+ if (ndirlist >= MAX_STACK_DIRS)
{
dirarray = (struct dirlist *) malloc (ndirlist * sizeof (*dirarray));
if (unlikely (dirarray == NULL))