From 29987adf34007c0fc60971db7746ea0815b0808a Mon Sep 17 00:00:00 2001
From: Jari Vetoniemi <mailroxas@gmail.com>
Date: Tue, 23 Oct 2018 22:40:30 +0300
Subject: memview: store unknown region in named array

This makes view referseshes work without special casing
---
 src/memview.c | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/src/memview.c b/src/memview.c
index bd22305..49a503b 100644
--- a/src/memview.c
+++ b/src/memview.c
@@ -211,12 +211,6 @@ offset_is_in_named_region(const size_t offset, const struct named_region *named)
 static const struct named_region*
 named_region_for_offset(const size_t offset, const bool set_active)
 {
-   static struct named_region unknown;
-   unknown = (struct named_region){ .region = { .start = offset, .end = offset + 1 }, .name = "unknown" };
-
-   if (!ctx.num_regions)
-      return &unknown;
-
    if (offset_is_in_named_region(offset, &ctx.named[ctx.active_region]))
       return &ctx.named[ctx.active_region];
 
@@ -233,7 +227,8 @@ named_region_for_offset(const size_t offset, const bool set_active)
       }
    }
 
-   return &unknown;
+   ctx.named[0].region = (struct region){ .start = offset, .end = offset + 1 };
+   return &ctx.named[(ctx.active_region = 0)];
 }
 
 static size_t
@@ -787,7 +782,7 @@ write_bytes(void *arg)
 static void
 quit(void)
 {
-   for (size_t i = 0; i < ctx.num_regions; ++i)
+   for (size_t i = 1; i < ctx.num_regions; ++i)
       free((char*)ctx.named[i].name);
 
    mem_io_release(&ctx.io);
@@ -896,9 +891,11 @@ main(int argc, char *argv[])
          err(EXIT_FAILURE, "fopen(%s)", path);
    }
 
+   ctx.num_regions = 1;
    mem_io_uio_init(&ctx.io, pid);
    for_each_token_in_file(regions_file, '\n', region_cb, NULL);
    fclose(regions_file);
+   ctx.named[0] = (struct named_region){ .name = "unknown" };
    ctx.hexview.offset = ctx.named[ctx.active_region].region.start;
 
    init();
-- 
cgit v1.2.3-70-g09d2