SourceForge logo
SourceForge logo
Menu

matplotlib-checkins

From: <md...@us...> - 2008年02月19日 21:33:29
Revision: 4983
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4983&view=rev
Author: mdboom
Date: 2008年02月19日 13:33:26 -0800 (2008年2月19日)
Log Message:
-----------
Fix memory leaks and uninitialized memory errors discovered with valgrind.
Modified Paths:
--------------
 trunk/matplotlib/src/_path.cpp
Modified: trunk/matplotlib/src/_path.cpp
===================================================================
--- trunk/matplotlib/src/_path.cpp	2008年02月19日 21:32:48 UTC (rev 4982)
+++ trunk/matplotlib/src/_path.cpp	2008年02月19日 21:33:26 UTC (rev 4983)
@@ -309,6 +309,8 @@
 extents_data[1] = std::numeric_limits<double>::infinity();
 extents_data[2] = -std::numeric_limits<double>::infinity();
 extents_data[3] = -std::numeric_limits<double>::infinity();
+ xm = std::numeric_limits<double>::infinity();
+ ym = std::numeric_limits<double>::infinity();
 
 ::get_path_extents(path, trans,
 &extents_data[0], &extents_data[1], &extents_data[2], &extents_data[3],
@@ -320,7 +322,7 @@
 throw;
 }
 
- return Py::Object((PyObject*)extents);
+ return Py::Object((PyObject*)extents, true);
 }
 
 Py::Object _path_module::update_path_extents(const Py::Tuple& args)
@@ -474,6 +476,8 @@
 y0 = std::numeric_limits<double>::infinity();
 x1 = -std::numeric_limits<double>::infinity();
 y1 = -std::numeric_limits<double>::infinity();
+ xm = std::numeric_limits<double>::infinity();
+ ym = std::numeric_limits<double>::infinity();
 agg::trans_affine trans;
 
 for (i = 0; i < N; ++i)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <md...@us...> - 2008年02月20日 14:12:04
Revision: 4984
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4984&view=rev
Author: mdboom
Date: 2008年02月20日 06:11:59 -0800 (2008年2月20日)
Log Message:
-----------
Fix memory leak in Gtk backend.
Modified Paths:
--------------
 trunk/matplotlib/src/_path.cpp
Modified: trunk/matplotlib/src/_path.cpp
===================================================================
--- trunk/matplotlib/src/_path.cpp	2008年02月19日 21:33:26 UTC (rev 4983)
+++ trunk/matplotlib/src/_path.cpp	2008年02月20日 14:11:59 UTC (rev 4984)
@@ -1099,12 +1099,10 @@
 polygon_array = (PyArrayObject*)PyArray_SimpleNew
 	(2, polygon_dims, PyArray_DOUBLE);
 if (!polygon_array)
- {
 	throw Py::MemoryError("Error creating polygon array");
- }
 double* polygon_data = (double*)PyArray_DATA(polygon_array);
 memcpy(polygon_data, &polygon[0], polygon.size() * sizeof(double));
- polygons.append(Py::Object((PyObject*)polygon_array));
+ polygons.append(Py::Object((PyObject*)polygon_array, true));
 }
 
 Py::Object _path_module::convert_path_to_polygons(const Py::Tuple& args)
@@ -1133,6 +1131,8 @@
 double x, y;
 unsigned code;
 
+ polygon.reserve(path.total_vertices());
+
 while ((code = curve.vertex(&x, &y)) != agg::path_cmd_stop)
 {
 	if ((code & agg::path_cmd_end_poly) == agg::path_cmd_end_poly) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <md...@us...> - 2008年02月21日 19:13:50
Revision: 4986
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4986&view=rev
Author: mdboom
Date: 2008年02月21日 11:13:46 -0800 (2008年2月21日)
Log Message:
-----------
Formatting and minor efficiency improvement.
Modified Paths:
--------------
 trunk/matplotlib/src/_path.cpp
Modified: trunk/matplotlib/src/_path.cpp
===================================================================
--- trunk/matplotlib/src/_path.cpp	2008年02月21日 19:13:14 UTC (rev 4985)
+++ trunk/matplotlib/src/_path.cpp	2008年02月21日 19:13:46 UTC (rev 4986)
@@ -921,7 +921,7 @@
 }
 
 result = (PyArrayObject*)PyArray_SimpleNew
- (PyArray_NDIM(vertices), PyArray_DIMS(vertices), PyArray_DOUBLE);
+ (PyArray_NDIM(vertices), PyArray_DIMS(vertices), PyArray_DOUBLE);
 if (PyArray_NDIM(vertices) == 2)
 {
 size_t n = PyArray_DIM(vertices, 0);
@@ -1017,17 +1017,17 @@
 return Py::Int(count);
 }
 
-bool segments_intersect(const double& x1, const double &y1,
- const double& x2, const double &y2,
- const double& x3, const double &y3,
- const double& x4, const double &y4)
+bool segments_intersect(const double& x1, const double& y1,
+ const double& x2, const double& y2,
+ const double& x3, const double& y3,
+ const double& x4, const double& y4)
 {
- double den = ((y4-y3) * (x2-x1)) - ((x4-x3)*(y2-y1));
+ double den = ((y4-y3)*(x2-x1)) - ((x4-x3)*(y2-y1));
 if (den == 0.0)
 return false;
 
- double n1 = ((x4-x3) * (y1-y3)) - ((y4-y3)*(x1-x3));
- double n2 = ((x2-x1) * (y1-y3)) - ((y2-y1)*(x1-x3));
+ double n1 = ((x4-x3)*(y1-y3)) - ((y4-y3)*(x1-x3));
+ double n2 = ((x2-x1)*(y1-y3)) - ((y2-y1)*(x1-x3));
 
 double u1 = n1/den;
 double u2 = n2/den;
@@ -1075,20 +1075,9 @@
 PathIterator p1(args[0]);
 PathIterator p2(args[1]);
 
- bool intersects = ::path_intersects_path(p1, p2);
- if (!intersects)
- {
- intersects = ::path_in_path(p1, agg::trans_affine(), p2, agg::trans_affine());
- if (!intersects)
- {
- intersects = ::path_in_path(p2, agg::trans_affine(), p1, agg::trans_affine());
- if (!intersects)
- {
- return Py::Int(0);
- }
- }
- }
- return Py::Int(1);
+ return Py::Int(::path_intersects_path(p1, p2)
+ || ::path_in_path(p1, agg::trans_affine(), p2, agg::trans_affine())
+ || ::path_in_path(p2, agg::trans_affine(), p1, agg::trans_affine()));
 }
 
 void _add_polygon(Py::List& polygons, const std::vector<double>& polygon) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <md...@us...> - 2008年02月25日 20:24:38
Revision: 4988
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4988&view=rev
Author: mdboom
Date: 2008年02月25日 12:24:33 -0800 (2008年2月25日)
Log Message:
-----------
Fix memory reservation for curve to line segment conversion.
Modified Paths:
--------------
 trunk/matplotlib/src/_path.cpp
Modified: trunk/matplotlib/src/_path.cpp
===================================================================
--- trunk/matplotlib/src/_path.cpp	2008年02月25日 20:21:39 UTC (rev 4987)
+++ trunk/matplotlib/src/_path.cpp	2008年02月25日 20:24:33 UTC (rev 4988)
@@ -1120,7 +1120,7 @@
 double x, y;
 unsigned code;
 
- polygon.reserve(path.total_vertices());
+ polygon.reserve(path.total_vertices() * 2);
 
 while ((code = curve.vertex(&x, &y)) != agg::path_cmd_stop)
 {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <md...@us...> - 2008年04月22日 12:15:22
Revision: 5056
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=5056&view=rev
Author: mdboom
Date: 2008年04月22日 05:15:13 -0700 (2008年4月22日)
Log Message:
-----------
Removing my "bone-headed" "not"s and "or"s. Including "math.h" in an
attempt to get VS2003 working.
Modified Paths:
--------------
 trunk/matplotlib/src/_path.cpp
Modified: trunk/matplotlib/src/_path.cpp
===================================================================
--- trunk/matplotlib/src/_path.cpp	2008年04月21日 08:17:45 UTC (rev 5055)
+++ trunk/matplotlib/src/_path.cpp	2008年04月22日 12:15:13 UTC (rev 5056)
@@ -1,3 +1,6 @@
+#include <limits>
+#include <math.h>
+
 #include "agg_py_path_iterator.h"
 #include "agg_py_transforms.h"
 
@@ -997,10 +1000,10 @@
 std::swap(bx0, bx1);
 if (by1 < by0)
 std::swap(by0, by1);
- if (not ((bx1 <= ax0) or
- (by1 <= ay0) or
- (bx0 >= ax1) or
- (by0 >= ay1)))
+ if (!((bx1 <= ax0) ||
+ (by1 <= ay0) ||
+ (bx0 >= ax1) ||
+ (by0 >= ay1)))
 ++count;
 }
 else
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <md...@us...> - 2008年05月02日 16:57:48
Revision: 5105
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=5105&view=rev
Author: mdboom
Date: 2008年05月02日 09:57:45 -0700 (2008年5月02日)
Log Message:
-----------
Minor fixes.
Modified Paths:
--------------
 trunk/matplotlib/src/_path.cpp
Modified: trunk/matplotlib/src/_path.cpp
===================================================================
--- trunk/matplotlib/src/_path.cpp	2008年05月02日 16:55:59 UTC (rev 5104)
+++ trunk/matplotlib/src/_path.cpp	2008年05月02日 16:57:45 UTC (rev 5105)
@@ -657,7 +657,8 @@
 
 bisectx(double x) : m_x(x) {}
 
- void bisect(double sx, double sy, double px, double py, double* bx, double* by) const
+ inline void bisect(double sx, double sy, double px, double py,
+ double* bx, double* by) const
 {
 *bx = m_x;
 double dx = px - sx;
@@ -670,7 +671,7 @@
 {
 xlt(double x) : bisectx(x) {}
 
- bool is_inside(double x, double y) const
+ inline bool is_inside(double x, double y) const
 {
 return x <= m_x;
 }
@@ -680,7 +681,7 @@
 {
 xgt(double x) : bisectx(x) {}
 
- bool is_inside(double x, double y) const
+ inline bool is_inside(double x, double y) const
 {
 return x >= m_x;
 }
@@ -692,7 +693,7 @@
 
 bisecty(double y) : m_y(y) {}
 
- void bisect(double sx, double sy, double px, double py, double* bx, double* by) const
+ inline void bisect(double sx, double sy, double px, double py, double* bx, double* by) const
 {
 *by = m_y;
 double dx = px - sx;
@@ -705,7 +706,7 @@
 {
 ylt(double y) : bisecty(y) {}
 
- bool is_inside(double x, double y) const
+ inline bool is_inside(double x, double y) const
 {
 return y <= m_y;
 }
@@ -715,7 +716,7 @@
 {
 ygt(double y) : bisecty(y) {}
 
- bool is_inside(double x, double y) const
+ inline bool is_inside(double x, double y) const
 {
 return y >= m_y;
 }
@@ -723,7 +724,7 @@
 }
 
 template<class Filter>
-void clip_to_rect_one_step(const Polygon& polygon, Polygon& result, const Filter& filter)
+inline void clip_to_rect_one_step(const Polygon& polygon, Polygon& result, const Filter& filter)
 {
 double sx, sy, px, py, bx, by;
 bool sinside, pinside;
@@ -899,8 +900,9 @@
 
 transform = (PyArrayObject*) PyArray_FromObject
 (transform_obj.ptr(), PyArray_DOUBLE, 2, 2);
- if (!transform || PyArray_NDIM(transform) != 2 ||
-	 PyArray_DIM(transform, 0) != 3 || PyArray_DIM(transform, 1) != 3)
+ if (!transform ||
+	 PyArray_DIM(transform, 0) != 3 ||
+ PyArray_DIM(transform, 1) != 3)
 throw Py::ValueError("Invalid transform.");
 
 double a, b, c, d, e, f;
@@ -964,6 +966,7 @@
 Py_XDECREF(vertices);
 Py_XDECREF(transform);
 Py_XDECREF(result);
+ throw;
 }
 
 Py_XDECREF(vertices);
@@ -1020,10 +1023,10 @@
 return Py::Int(count);
 }
 
-bool segments_intersect(const double& x1, const double& y1,
- const double& x2, const double& y2,
- const double& x3, const double& y3,
- const double& x4, const double& y4)
+inline bool segments_intersect(const double& x1, const double& y1,
+ const double& x2, const double& y2,
+ const double& x3, const double& y3,
+ const double& x4, const double& y4)
 {
 double den = ((y4-y3)*(x2-x1)) - ((x4-x3)*(y2-y1));
 if (den == 0.0)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.
Thanks for helping keep SourceForge clean.
X





Briefly describe the problem (required):
Upload screenshot of ad (required):
Select a file, or drag & drop file here.
Screenshot instructions:

Click URL instructions:
Right-click on the ad, choose "Copy Link", then paste here →
(This may not be possible with some types of ads)

More information about our ad policies

Ad destination/click URL:

AltStyle によって変換されたページ (->オリジナル) /