Fix some minor issues found via static analysis
[platform/upstream/libunwind.git] / src / mi / Gdyn-remote.c
index 40a5ad8..702c265 100644 (file)
@@ -228,7 +228,7 @@ unwi_dyn_remote_find_proc_info (unw_addr_space_t as, unw_word_t ip,
 
       if (fetchw (as, a, &addr, &gen1, arg) < 0
           || fetchw (as, a, &addr, &next_addr, arg) < 0)
-        return ret;
+        goto fail;
 
       for (addr = next_addr; addr != 0; addr = next_addr)
         {
@@ -245,6 +245,10 @@ unwi_dyn_remote_find_proc_info (unw_addr_space_t as, unw_word_t ip,
             {
               if (!di)
                 di = calloc (1, sizeof (*di));
+              if (!di) {
+                ret = -UNW_ENOMEM;
+                goto fail;
+              }
 
               di->start_ip = start_ip;
               di->end_ip = end_ip;
@@ -275,10 +279,11 @@ unwi_dyn_remote_find_proc_info (unw_addr_space_t as, unw_word_t ip,
     recheck:
       addr = dyn_list_addr;
       if (fetchw (as, a, &addr, &gen2, arg) < 0)
-        return ret;
+        goto fail;
     }
   while (gen1 != gen2);
 
+fail:
   if (ret < 0 && di)
     free (di);