summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCédric Krier <cedk@gentoo.org>2007-01-09 23:01:44 +0000
committerCédric Krier <cedk@gentoo.org>2007-01-09 23:01:44 +0000
commit497118d1f81fbe2d7df6140bf02e39b165ab6b5b (patch)
treef1ab0c93044006895f679924f1e4263037e0d7a9 /net-analyzer/rrdtool/files
parentVersion bump. (diff)
downloadgentoo-2-497118d1f81fbe2d7df6140bf02e39b165ab6b5b.tar.gz
gentoo-2-497118d1f81fbe2d7df6140bf02e39b165ab6b5b.tar.bz2
gentoo-2-497118d1f81fbe2d7df6140bf02e39b165ab6b5b.zip
Fix memory usage
(Portage version: 2.1.1-r2)
Diffstat (limited to 'net-analyzer/rrdtool/files')
-rw-r--r--net-analyzer/rrdtool/files/digest-rrdtool-1.2.15-r33
-rw-r--r--net-analyzer/rrdtool/files/rrdtool-1.2.15-mem-usage.patch133
2 files changed, 136 insertions, 0 deletions
diff --git a/net-analyzer/rrdtool/files/digest-rrdtool-1.2.15-r3 b/net-analyzer/rrdtool/files/digest-rrdtool-1.2.15-r3
new file mode 100644
index 000000000000..4a38035815c3
--- /dev/null
+++ b/net-analyzer/rrdtool/files/digest-rrdtool-1.2.15-r3
@@ -0,0 +1,3 @@
+MD5 bde8b12c202bc4e27fb9a9588a0aaddf rrdtool-1.2.15.tar.gz 1043064
+RMD160 493e5b108ac363484eb4015c0962945c5fb9fb9e rrdtool-1.2.15.tar.gz 1043064
+SHA256 b33d68da8a39bb0fc745c0202f3a58e73bfc6a9fd35d71fbd8979d40a5ef7397 rrdtool-1.2.15.tar.gz 1043064
diff --git a/net-analyzer/rrdtool/files/rrdtool-1.2.15-mem-usage.patch b/net-analyzer/rrdtool/files/rrdtool-1.2.15-mem-usage.patch
new file mode 100644
index 000000000000..e6f2f7d3761f
--- /dev/null
+++ b/net-analyzer/rrdtool/files/rrdtool-1.2.15-mem-usage.patch
@@ -0,0 +1,133 @@
+diff -ru rrdtool-1.2.15~/src/rrd_graph.c rrdtool-1.2.15/src/rrd_graph.c
+--- rrdtool-1.2.15~/src/rrd_graph.c 2007-01-09 23:40:14.000000000 +0100
++++ rrdtool-1.2.15/src/rrd_graph.c 2007-01-09 23:48:03.000000000 +0100
+@@ -1060,8 +1060,9 @@
+ ** relevant for min and max
+ */
+ if (finite(paintval) && im->gdes[ii].gf != GF_TICK ) {
+- if (isnan(minval) || paintval < minval)
+- minval = paintval;
++ if ((isnan(minval) || paintval < minval ) &&
++ ! (im->logarithmic && paintval <= 0.0))
++ minval = paintval;
+ if (isnan(maxval) || paintval > maxval)
+ maxval = paintval;
+ }
+@@ -1710,6 +1711,35 @@
+ return mnt;
+ }
+
++static int AlmostEqual2sComplement (float A, float B, int maxUlps)
++{
++
++ int aInt = *(int*)&A;
++ int bInt = *(int*)&B;
++ int intDiff;
++ /* Make sure maxUlps is non-negative and small enough that the
++ default NAN won't compare as equal to anything. */
++
++ /* assert(maxUlps > 0 && maxUlps < 4 * 1024 * 1024); */
++
++ /* Make aInt lexicographically ordered as a twos-complement int */
++
++ if (aInt < 0)
++ aInt = 0x80000000l - aInt;
++
++ /* Make bInt lexicographically ordered as a twos-complement int */
++
++ if (bInt < 0)
++ bInt = 0x80000000l - bInt;
++
++ intDiff = abs(aInt - bInt);
++
++ if (intDiff <= maxUlps)
++ return 1;
++
++ return 0;
++}
++
+ /* logaritmic horizontal grid */
+ int
+ horizontal_log_grid(image_desc_t *im)
+@@ -1719,7 +1749,9 @@
+ {1.0, 5.0, 10., 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0},
+ {1.0, 2.0, 5.0, 7.0, 10., 0.0, 0.0, 0.0, 0.0, 0.0},
+ {1.0, 2.0, 4.0, 6.0, 8.0, 10., 0.0, 0.0, 0.0, 0.0},
+- {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.}};
++ {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.},
++ {0,0,0,0,0, 0,0,0,0,0} /* last line */ };
++
+
+ int i, j, val_exp, min_exp;
+ double nex; /* number of decades in data */
+@@ -1728,7 +1760,7 @@
+ int mid = -1; /* row in yloglab for major grid */
+ double mspac; /* smallest major grid spacing (pixels) */
+ int flab; /* first value in yloglab to use */
+- double value, tmp;
++ double value, tmp, pre_value;
+ double X0,X1,Y0;
+ char graph_label[100];
+
+@@ -1747,11 +1779,11 @@
+ mid++;
+ for(i = 0; yloglab[mid][i + 1] < 10.0; i++);
+ mspac = logscale * log10(10.0 / yloglab[mid][i]);
+- } while(mspac > 2 * im->text_prop[TEXT_PROP_LEGEND].size && mid < 5);
++ } while(mspac > 2 * im->text_prop[TEXT_PROP_LEGEND].size && yloglab[mid][0] > 0);
+ if(mid) mid--;
+
+ /* find first value in yloglab */
+- for(flab = 0; frexp10(im->minval, &tmp) > yloglab[mid][flab]; flab++);
++ for(flab = 0; yloglab[mid][flab] < 10 && frexp10(im->minval, &tmp) > yloglab[mid][flab] ; flab++);
+ if(yloglab[mid][flab] == 10.0) {
+ tmp += 1.0;
+ flab = 0;
+@@ -1763,8 +1795,12 @@
+ X1=im->xorigin+im->xsize;
+
+ /* draw grid */
++ pre_value = DNAN;
+ while(1) {
+ value = yloglab[mid][flab] * pow(10.0, val_exp);
++ if ( AlmostEqual2sComplement(value,pre_value,4) ) break; /* it seems we are not converging */
++
++ pre_value = value;
+
+ Y0 = ytr(im, value);
+ if(Y0 <= im->yorigin - im->ysize) break;
+@@ -2484,34 +2520,6 @@
+ /* yes we are loosing precision by doing tos with floats instead of doubles
+ but it seems more stable this way. */
+
+-static int AlmostEqual2sComplement (float A, float B, int maxUlps)
+-{
+-
+- int aInt = *(int*)&A;
+- int bInt = *(int*)&B;
+- int intDiff;
+- /* Make sure maxUlps is non-negative and small enough that the
+- default NAN won't compare as equal to anything. */
+-
+- /* assert(maxUlps > 0 && maxUlps < 4 * 1024 * 1024); */
+-
+- /* Make aInt lexicographically ordered as a twos-complement int */
+-
+- if (aInt < 0)
+- aInt = 0x80000000l - aInt;
+-
+- /* Make bInt lexicographically ordered as a twos-complement int */
+-
+- if (bInt < 0)
+- bInt = 0x80000000l - bInt;
+-
+- intDiff = abs(aInt - bInt);
+-
+- if (intDiff <= maxUlps)
+- return 1;
+-
+- return 0;
+-}
+
+ /* draw that picture thing ... */
+ int