Revision: 8001
          http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8001&view=rev
Author:   mdboom
Date:     2009-12-03 18:54:54 +0000 (Thu, 03 Dec 2009)

Log Message:
-----------
[2903460] _path.pyd crashes in 0.99.1.win32-py2.6 on PIII CPU

Modified Paths:
--------------
    branches/v0_99_maint/src/_path.cpp

Modified: branches/v0_99_maint/src/_path.cpp
===================================================================
--- branches/v0_99_maint/src/_path.cpp  2009-12-02 01:13:25 UTC (rev 8000)
+++ branches/v0_99_maint/src/_path.cpp  2009-12-03 18:54:54 UTC (rev 8001)
@@ -147,7 +147,7 @@
 
             // The following cases denote the beginning on a new subpath
             if (code == agg::path_cmd_stop ||
-               (code & agg::path_cmd_end_poly) == agg::path_cmd_end_poly)
+                (code & agg::path_cmd_end_poly) == agg::path_cmd_end_poly)
             {
                 x = sx;
                 y = sy;
@@ -190,13 +190,13 @@
             vty1 = y;
         }
         while (code != agg::path_cmd_stop &&
-              (code & agg::path_cmd_end_poly) != agg::path_cmd_end_poly);
+               (code & agg::path_cmd_end_poly) != agg::path_cmd_end_poly);
 
         yflag1 = (vty1 >= ty);
         if (yflag0 != yflag1)
         {
             if ( ((vty1-ty) * (vtx0-vtx1) >=
-                 (vtx1-tx) * (vty0-vty1)) == yflag1 )
+                  (vtx1-tx) * (vty0-vty1)) == yflag1 )
             {
                 inside_flag ^= 1;
             }
@@ -462,7 +462,7 @@
 
     //segments, trans, clipbox, colors, linewidths, antialiaseds
     agg::trans_affine       master_transform = 
py_to_agg_transformation_matrix(args[0].ptr());
-    Py::SeqBase<Py::Object> paths           = args[1];
+    Py::SeqBase<Py::Object> paths            = args[1];
     Py::SeqBase<Py::Object> transforms_obj   = args[2];
     Py::Object              offsets_obj      = args[3];
     agg::trans_affine       offset_trans     = 
py_to_agg_transformation_matrix(args[4].ptr(), false);
@@ -474,15 +474,15 @@
     {
         offsets = (PyArrayObject*)PyArray_FromObject(offsets_obj.ptr(), 
PyArray_DOUBLE, 0, 2);
         if (!offsets ||
-           (PyArray_NDIM(offsets) == 2 && PyArray_DIM(offsets, 1) != 2) ||
-           (PyArray_NDIM(offsets) == 1 && PyArray_DIM(offsets, 0) != 0))
+            (PyArray_NDIM(offsets) == 2 && PyArray_DIM(offsets, 1) != 2) ||
+            (PyArray_NDIM(offsets) == 1 && PyArray_DIM(offsets, 0) != 0))
         {
             throw Py::ValueError("Offsets array must be Nx2");
         }
 
         size_t Npaths      = paths.length();
         size_t Noffsets    = offsets->dimensions[0];
-        size_t N              = std::max(Npaths, Noffsets);
+        size_t N               = std::max(Npaths, Noffsets);
         size_t Ntransforms = std::min(transforms_obj.length(), N);
         size_t i;
 
@@ -555,7 +555,7 @@
     double                  y                = Py::Float(args[1]);
     double                  radius           = Py::Float(args[2]);
     agg::trans_affine       master_transform = 
py_to_agg_transformation_matrix(args[3].ptr());
-    Py::SeqBase<Py::Object> paths           = args[4];
+    Py::SeqBase<Py::Object> paths            = args[4];
     Py::SeqBase<Py::Object> transforms_obj   = args[5];
     Py::SeqBase<Py::Object> offsets_obj      = args[6];
     agg::trans_affine       offset_trans     = 
py_to_agg_transformation_matrix(args[7].ptr());
@@ -563,8 +563,8 @@
 
     PyArrayObject* offsets = 
(PyArrayObject*)PyArray_FromObject(offsets_obj.ptr(), PyArray_DOUBLE, 0, 2);
     if (!offsets ||
-       (PyArray_NDIM(offsets) == 2 && PyArray_DIM(offsets, 1) != 2) ||
-       (PyArray_NDIM(offsets) == 1 && PyArray_DIM(offsets, 0) != 0))
+        (PyArray_NDIM(offsets) == 2 && PyArray_DIM(offsets, 1) != 2) ||
+        (PyArray_NDIM(offsets) == 1 && PyArray_DIM(offsets, 0) != 0))
     {
         Py_XDECREF(offsets);
         throw Py::ValueError("Offsets array must be Nx2");
@@ -888,7 +888,7 @@
             }
             for (size_t i = 0; i < size; ++i)
             {
-                ((double *)pyarray->data)[2*i]  = (*p)[i].x;
+                ((double *)pyarray->data)[2*i]   = (*p)[i].x;
                 ((double *)pyarray->data)[2*i+1] = (*p)[i].y;
             }
             if (PyList_SetItem(py_results, p - results.begin(), (PyObject 
*)pyarray) != -1)
@@ -922,14 +922,14 @@
         vertices = (PyArrayObject*)PyArray_FromObject
                    (vertices_obj.ptr(), PyArray_DOUBLE, 1, 2);
         if (!vertices ||
-           (PyArray_NDIM(vertices) == 2 && PyArray_DIM(vertices, 1) != 2) ||
-           (PyArray_NDIM(vertices) == 1 && PyArray_DIM(vertices, 0) != 2))
+            (PyArray_NDIM(vertices) == 2 && PyArray_DIM(vertices, 1) != 2) ||
+            (PyArray_NDIM(vertices) == 1 && PyArray_DIM(vertices, 0) != 2))
             throw Py::ValueError("Invalid vertices array.");
 
         transform = (PyArrayObject*) PyArray_FromObject
                     (transform_obj.ptr(), PyArray_DOUBLE, 2, 2);
         if (!transform ||
-           PyArray_DIM(transform, 0) != 3 ||
+            PyArray_DIM(transform, 0) != 3 ||
             PyArray_DIM(transform, 1) != 3)
             throw Py::ValueError("Invalid transform.");
 
@@ -1010,7 +1010,7 @@
 {
     args.verify_length(2);
 
-    Py::Object             bbox   = args[0];
+    Py::Object              bbox   = args[0];
     Py::SeqBase<Py::Object> bboxes = args[1];
 
     double ax0, ay0, ax1, ay1;
@@ -1131,13 +1131,13 @@
 
 void _add_polygon(Py::List& polygons, const std::vector<double>& polygon) {
     if (polygon.size() == 0)
-       return;
+        return;
     npy_intp polygon_dims[] = { polygon.size() / 2, 2, 0 };
     PyArrayObject* polygon_array = NULL;
     polygon_array = (PyArrayObject*)PyArray_SimpleNew
-       (2, polygon_dims, PyArray_DOUBLE);
+        (2, polygon_dims, PyArray_DOUBLE);
     if (!polygon_array)
-       throw Py::MemoryError("Error creating 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, true));
@@ -1179,26 +1179,26 @@
 
     while ((code = curve.vertex(&x, &y)) != agg::path_cmd_stop)
     {
-       if ((code & agg::path_cmd_end_poly) == agg::path_cmd_end_poly)
+        if ((code & agg::path_cmd_end_poly) == agg::path_cmd_end_poly)
         {
-           if (polygon.size() >= 2)
-           {
-               polygon.push_back(polygon[0]);
-               polygon.push_back(polygon[1]);
-               _add_polygon(polygons, polygon);
-           }
-           polygon.clear();
-       }
+            if (polygon.size() >= 2)
+            {
+                polygon.push_back(polygon[0]);
+                polygon.push_back(polygon[1]);
+                _add_polygon(polygons, polygon);
+            }
+            polygon.clear();
+        }
         else
         {
-           if (code == agg::path_cmd_move_to)
+            if (code == agg::path_cmd_move_to)
             {
-               _add_polygon(polygons, polygon);
-               polygon.clear();
-           }
-           polygon.push_back(x);
-           polygon.push_back(y);
-       }
+                _add_polygon(polygons, polygon);
+                polygon.clear();
+            }
+            polygon.push_back(x);
+            polygon.push_back(y);
+        }
     }
 
     _add_polygon(polygons, polygon);
@@ -1356,8 +1356,8 @@
     DL_EXPORT(void)
     init_path(void)
 {
-    import_array();
-
     static _path_module* _path = NULL;
     _path = new _path_module;
+
+    import_array();
 }


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Join us December 9, 2009 for the Red Hat Virtual Experience,
a free event focused on virtualization and cloud computing. 
Attend in-depth sessions from your desk. Your couch. Anywhere.
http://p.sf.net/sfu/redhat-sfdev2dev
_______________________________________________
Matplotlib-checkins mailing list
Matplotlib-checkins@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins

Reply via email to