summaryrefslogtreecommitdiff
path: root/devel/mprof/files/patch-mpgraph.c
blob: 1eb95634f85c0d010e234c93bfd641497e14fda0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
--- mpgraph.c.orig	Tue Apr 20 16:36:18 1993
+++ mpgraph.c	Mon Jun  3 18:26:17 2002
@@ -23,8 +23,8 @@
 #define	UNUSED		-1
 #define	USED		0
 
-FILE	*stout = stdout;
-FILE	*sterr = stderr;
+/* FILE	*stout = stdout; */
+/* FILE	*sterr = stderr; */
 
 extern	mpcell	hmem[];
 extern	char	*strdup();
@@ -114,7 +114,7 @@
     vertex	from, to;
     mpdata	data;
     int		mark;
-    struct edge_struct *save
+    struct edge_struct *save;
 } *edge, edge_item;
 
 edge
--- mpgraph.c.orig	Fri Apr  7 13:39:45 2006
+++ mpgraph.c	Fri Apr  7 01:45:35 2006
@@ -836,7 +836,15 @@
 	while (!mp_null(chain)) {
 	    vertex	v;
 	    s = (mpsym) mp_car(chain);
-	    v = make_vertex(fn_name(s), count, fn_lcount(s), fn_parents(s));
+	    if ( s == NULL) {
+	        chain = (mpcell) mp_cdr(chain);
+		continue;
+	    }
+	    if (fn_name(s)) 
+	    	v = make_vertex(fn_name(s), count, fn_lcount(s), fn_parents(s));
+	    else
+	    	v = make_vertex("unknown", count, fn_lcount(s), fn_parents(s));
+		
 	    vpush(v, vset);
 	    count += 1;
 	    chain = (mpcell) mp_cdr(chain);
@@ -864,7 +872,11 @@
 	    
 	    parent_name = fn_name((mpsym) mp_car(parent));
 	    parent_data = (mpdata) mp_cdr(parent);
-	    vfrom = hlookup(parent_name);
+	    if (parent_name == NULL) {
+	    	vfrom = hlookup("unknown");
+	    } else {
+	    	vfrom = hlookup(parent_name);
+	    }
 
 	    if (vfrom == vto) {
 		vto->srefs += 1;