Blame SOURCES/glibc-rh977874.patch

147e83
commit 7da6d9ed266105e0ebefd01a4b6bf08bf56257c3
147e83
Author: Siddhesh Poyarekar <siddhesh@redhat.com>
147e83
Date:   Tue Feb 26 14:24:40 2013 +0530
147e83
147e83
    Fix FPE in memusagestat when malloc utilization is zero
147e83
    
147e83
    [BZ #15160]
147e83
    
147e83
    Draw graphs for heap and stack only if MAXSIZE_HEAP and MAXSIZE_STACK
147e83
    are non-zero.
147e83
147e83
diff --git glibc-2.17-c758a686/malloc/memusagestat.c glibc-2.17-c758a686/malloc/memusagestat.c
147e83
index f561e0d..7bbd009 100644
147e83
--- glibc-2.17-c758a686/malloc/memusagestat.c
147e83
+++ glibc-2.17-c758a686/malloc/memusagestat.c
147e83
@@ -319,17 +319,26 @@ main (int argc, char *argv[])
147e83
 
147e83
   for (line = 1; line <= 3; ++line)
147e83
     {
147e83
-      cnt = ((ysize - 40) * (maxsize_heap / 4 * line / heap_scale)) /
147e83
-	(maxsize_heap / heap_scale);
147e83
-      gdImageDashedLine (im_out, 40, ysize - 20 - cnt, xsize - 40,
147e83
-			 ysize - 20 - cnt, red);
147e83
-      snprintf (buf, sizeof (buf), heap_format, maxsize_heap / 4 * line /
147e83
-		heap_scale);
147e83
-      gdImageString (im_out, gdFontSmall, 39 - strlen (buf) * 6,
147e83
-		     ysize - 26 - cnt, (unsigned char *) buf, red);
147e83
-
147e83
-      cnt2 = ((ysize - 40) * (maxsize_stack / 4 * line / stack_scale)) /
147e83
-	(maxsize_stack / stack_scale);
147e83
+      if (maxsize_heap > 0)
147e83
+	{
147e83
+	  cnt = (((ysize - 40) * (maxsize_heap / 4 * line / heap_scale))
147e83
+		 / (maxsize_heap / heap_scale));
147e83
+	  gdImageDashedLine (im_out, 40, ysize - 20 - cnt, xsize - 40,
147e83
+			     ysize - 20 - cnt, red);
147e83
+	  snprintf (buf, sizeof (buf), heap_format,
147e83
+		    maxsize_heap / 4 * line / heap_scale);
147e83
+	  gdImageString (im_out, gdFontSmall, 39 - strlen (buf) * 6,
147e83
+			 ysize - 26 - cnt, (unsigned char *) buf, red);
147e83
+	}
147e83
+      else
147e83
+	cnt = 0;
147e83
+
147e83
+      if (maxsize_stack > 0)
147e83
+	cnt2 = (((ysize - 40) * (maxsize_stack / 4 * line / stack_scale))
147e83
+		/ (maxsize_stack / stack_scale));
147e83
+      else
147e83
+	cnt2 = 0;
147e83
+
147e83
       if (cnt != cnt2)
147e83
 	gdImageDashedLine (im_out, 40, ysize - 20 - cnt2, xsize - 40,
147e83
 			   ysize - 20 - cnt2, green);
147e83
@@ -372,7 +381,7 @@ main (int argc, char *argv[])
147e83
 				    ysize - 14, yellow);
147e83
 	  previously = now;
147e83
 
147e83
-	  if (also_total)
147e83
+	  if (also_total && maxsize_heap > 0)
147e83
 	    {
147e83
 	      size_t new3;
147e83
 
147e83
@@ -386,21 +395,27 @@ main (int argc, char *argv[])
147e83
 	      last_total = new3;
147e83
 	    }
147e83
 
147e83
-	  // assert (entry.heap <= maxsize_heap);
147e83
-	  new[0] = (ysize - 20) - ((((unsigned long long int) (ysize - 40))
147e83
-				    * entry.heap) / maxsize_heap);
147e83
-	  gdImageLine (im_out, 40 + ((xsize - 80) * (cnt - 1)) / total,
147e83
-		       last_heap, 40 + ((xsize - 80) * cnt) / total, new[0],
147e83
-		       red);
147e83
-	  last_heap = new[0];
147e83
-
147e83
-	  // assert (entry.stack <= maxsize_stack);
147e83
-	  new[1] = (ysize - 20) - ((((unsigned long long int) (ysize - 40))
147e83
-				    * entry.stack) / maxsize_stack);
147e83
-	  gdImageLine (im_out, 40 + ((xsize - 80) * (cnt - 1)) / total,
147e83
-		       last_stack, 40 + ((xsize - 80) * cnt) / total, new[1],
147e83
-		       green);
147e83
-	  last_stack = new[1];
147e83
+	  if (maxsize_heap > 0)
147e83
+	    {
147e83
+	      new[0] = ((ysize - 20)
147e83
+			- ((((unsigned long long int) (ysize - 40))
147e83
+			    * entry.heap) / maxsize_heap));
147e83
+	      gdImageLine (im_out, 40 + ((xsize - 80) * (cnt - 1)) / total,
147e83
+			   last_heap, 40 + ((xsize - 80) * cnt) / total,
147e83
+			   new[0], red);
147e83
+	      last_heap = new[0];
147e83
+	    }
147e83
+
147e83
+	  if (maxsize_stack > 0)
147e83
+	    {
147e83
+	      new[1] = ((ysize - 20)
147e83
+			- ((((unsigned long long int) (ysize - 40))
147e83
+			    * entry.stack) / maxsize_stack));
147e83
+	      gdImageLine (im_out, 40 + ((xsize - 80) * (cnt - 1)) / total,
147e83
+			   last_stack, 40 + ((xsize - 80) * cnt) / total,
147e83
+			   new[1], green);
147e83
+	      last_stack = new[1];
147e83
+	    }
147e83
 	}
147e83
 
147e83
       cnt = 0;
147e83
@@ -448,7 +463,7 @@ main (int argc, char *argv[])
147e83
 	      next_tick += MAX (1, total / 20);
147e83
 	    }
147e83
 
147e83
-	  if (also_total)
147e83
+	  if (also_total && maxsize_heap > 0)
147e83
 	    {
147e83
 	      size_t new3;
147e83
 
147e83
@@ -459,16 +474,24 @@ main (int argc, char *argv[])
147e83
 	      last_total = new3;
147e83
 	    }
147e83
 
147e83
-	  new[0] = (ysize - 20) - ((((unsigned long long int) (ysize - 40))
147e83
-				    * entry.heap) / maxsize_heap);
147e83
-	  gdImageLine (im_out, last_xpos, last_heap, xpos, new[0], red);
147e83
-	  last_heap = new[0];
147e83
+	  if (maxsize_heap > 0)
147e83
+	    {
147e83
+	      new[0] = ((ysize - 20)
147e83
+			- ((((unsigned long long int) (ysize - 40))
147e83
+			    * entry.heap) / maxsize_heap));
147e83
+	      gdImageLine (im_out, last_xpos, last_heap, xpos, new[0], red);
147e83
+	      last_heap = new[0];
147e83
+	    }
147e83
 
147e83
-	  // assert (entry.stack <= maxsize_stack);
147e83
-	  new[1] = (ysize - 20) - ((((unsigned long long int) (ysize - 40))
147e83
-				    * entry.stack) / maxsize_stack);
147e83
-	  gdImageLine (im_out, last_xpos, last_stack, xpos, new[1], green);
147e83
-	  last_stack = new[1];
147e83
+	  if (maxsize_stack > 0)
147e83
+	    {
147e83
+	      new[1] = ((ysize - 20)
147e83
+			- ((((unsigned long long int) (ysize - 40))
147e83
+			    * entry.stack) / maxsize_stack));
147e83
+	      gdImageLine (im_out, last_xpos, last_stack, xpos, new[1],
147e83
+			   green);
147e83
+	      last_stack = new[1];
147e83
+	    }
147e83
 
147e83
 	  last_xpos = xpos;
147e83
 	}