]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Factorised some egregiously repetitive code.
authorNicholas Nethercote <njn@valgrind.org>
Fri, 4 Oct 2002 15:15:08 +0000 (15:15 +0000)
committerNicholas Nethercote <njn@valgrind.org>
Fri, 4 Oct 2002 15:15:08 +0000 (15:15 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1183

coregrind/vg_symtab2.c

index f945d54532c3d7632b5386ee5ff5a070a7613422..ac5b19561f25851c558623576a212b1d6615656a 100644 (file)
@@ -2066,69 +2066,34 @@ void VG_(mini_stack_dump) ( ExeContext* ec )
 
    Int stop_at = VG_(clo_backtrace_size);
 
-   n = 0;
-
-   // SSS: factor this repeated code out!
-
-   know_fnname  = VG_(get_fnname) (ec->eips[0], buf_fn,  M_VG_ERRTXT);
-   know_objname = VG_(get_objname)(ec->eips[0], buf_obj, M_VG_ERRTXT);
-   know_srcloc  = VG_(get_filename_linenum)(ec->eips[0], 
-                                            buf_srcloc, M_VG_ERRTXT, 
-                                            &lineno);
-
-   APPEND("   at ");
-   VG_(sprintf)(ibuf,"0x%x: ", ec->eips[0]);
-   APPEND(ibuf);
-   if (know_fnname) { 
-      APPEND(buf_fn);
-      if (!know_srcloc && know_objname) {
-         APPEND(" (in ");
-         APPEND(buf_obj);
-         APPEND(")");
-      }
-   } else if (know_objname && !know_srcloc) {
-      APPEND("(within ");
-      APPEND(buf_obj);
-      APPEND(")");
-   } else {
-      APPEND("???");
-   }
-   if (know_srcloc) {
-      APPEND(" (");
-      APPEND(buf_srcloc);
-      APPEND(":");
-      VG_(sprintf)(ibuf,"%d",lineno);
-      APPEND(ibuf);
-      APPEND(")");
-   }
-   VG_(message)(Vg_UserMsg, "%s", buf);
+   vg_assert(stop_at > 0);
 
-   for (i = 1; i < stop_at && ec->eips[i] != 0; i++) {
+   i = 0;
+   do {
+      n = 0;
       know_fnname  = VG_(get_fnname) (ec->eips[i], buf_fn,  M_VG_ERRTXT);
       know_objname = VG_(get_objname)(ec->eips[i], buf_obj, M_VG_ERRTXT);
       know_srcloc  = VG_(get_filename_linenum)(ec->eips[i], 
                                                buf_srcloc, M_VG_ERRTXT, 
                                                &lineno);
-      n = 0;
-      APPEND("   by ");
-      VG_(sprintf)(ibuf,"0x%x: ",ec->eips[i]);
+      if (i == 0) APPEND("   at ") else APPEND("   by ");
+      
+      VG_(sprintf)(ibuf,"0x%x: ", ec->eips[i]);
       APPEND(ibuf);
       if (know_fnname) { 
-         APPEND(buf_fn) 
+         APPEND(buf_fn);
          if (!know_srcloc && know_objname) {
             APPEND(" (in ");
             APPEND(buf_obj);
             APPEND(")");
          }
+      } else if (know_objname && !know_srcloc) {
+         APPEND("(within ");
+         APPEND(buf_obj);
+         APPEND(")");
       } else {
-         if (know_objname && !know_srcloc) {
-            APPEND("(within ");
-            APPEND(buf_obj);
-            APPEND(")"); 
-         } else {
-            APPEND("???");
-         }
-      };
+         APPEND("???");
+      }
       if (know_srcloc) {
          APPEND(" (");
          APPEND(buf_srcloc);
@@ -2138,7 +2103,9 @@ void VG_(mini_stack_dump) ( ExeContext* ec )
          APPEND(")");
       }
       VG_(message)(Vg_UserMsg, "%s", buf);
-   }   
+      i++;
+
+   } while (i < stop_at && ec->eips[i] != 0);
 }
 
 #undef APPEND