diff --git a/Geo/GEdge.cpp b/Geo/GEdge.cpp
index a760fbd1a7109bb32b300bb22b868016a30c010c..5a1336d981681e31c211ad2c97dc795fa6564c6d 100644
--- a/Geo/GEdge.cpp
+++ b/Geo/GEdge.cpp
@@ -547,7 +547,8 @@ static void _discretize(double tol, GEdge * edge, std::vector<sortedPoint> &upts
   const double d2 = sqDistPointSegment(pmid, p0, p1);
   if (d2 < tol * tol)
     return;
-  upts.push_back((sortedPoint){pmid, tmid, pos1});
+  sortedPoint pnt = {pmid, tmid, pos1};
+  upts.push_back(pnt);
   const int posmid = upts.size() - 1;
   upts[pos0].next = posmid;
   _discretize(tol, edge, upts, pos0);
@@ -557,8 +558,10 @@ static void _discretize(double tol, GEdge * edge, std::vector<sortedPoint> &upts
 void GEdge::discretize(double tol, std::vector<SPoint3> &dpts, std::vector<double> &ts)
 {
   std::vector<sortedPoint> upts;
-  upts.push_back((sortedPoint){getBeginVertex()->xyz(), 0., 1});
-  upts.push_back((sortedPoint){getEndVertex()->xyz(), 1., -1});
+  sortedPoint pnt1 = {getBeginVertex()->xyz(), 0., 1};
+  upts.push_back(pnt1);
+  sortedPoint pnt2 = {getEndVertex()->xyz(), 1., -1};
+  upts.push_back(pnt2);
   _discretize(tol, this, upts, 0);
   dpts.clear();
   dpts.reserve(upts.size());
diff --git a/Numeric/decasteljau.cpp b/Numeric/decasteljau.cpp
index f967f2a7b1ccee1c695b0ae9475553efabb5d1b3..d56c866445198dbbc50131390d61bd268963da56 100644
--- a/Numeric/decasteljau.cpp
+++ b/Numeric/decasteljau.cpp
@@ -10,7 +10,8 @@ typedef struct {
 
 static int sortedPointInsert(const SPoint3 &p, const double t, std::vector<sortedPoint> &pts, int pos)
 {
-  pts.push_back((sortedPoint) {p, t, pts[pos].next});
+  sortedPoint pnt = {p, t, pts[pos].next};
+  pts.push_back(pnt);
   int newp = pts.size() - 1;
   pts[pos].next = newp;
   return newp;
@@ -55,8 +56,10 @@ static void decasteljau(double tol, std::vector<sortedPoint> &discrete, int pos,
 void decasteljau(double tol, const SPoint3 &p0, const SPoint3 &p1, const SPoint3 &p2, std::vector<SPoint3> &pts, std::vector<double> &ts)
 {
   std::vector<sortedPoint> discrete;
-  discrete.push_back((sortedPoint) {p0, 0., 1});
-  discrete.push_back((sortedPoint) {p2, 1., -1});
+  sortedPoint pnt1 = {p0, 0., 1};
+  discrete.push_back(pnt1);
+  sortedPoint pnt2 = {p2, 1., -1};
+  discrete.push_back(pnt2);
   decasteljau(tol, discrete, 0, p0, p1, p2, 0., 1);
   sortedPointToVector(discrete, pts, ts);
 }
@@ -80,8 +83,10 @@ static void decasteljau(double tol, std::vector<sortedPoint> &discrete, int pos,
 void decasteljau(double tol, const SPoint3 &p0, const SPoint3 &p1, const SPoint3 &p2, const SPoint3 &p3, std::vector<SPoint3> &pts, std::vector<double> &ts)
 {
   std::vector<sortedPoint> discrete;
-  discrete.push_back((sortedPoint) {p0, 0., 1});
-  discrete.push_back((sortedPoint) {p3, 1., -1});
+  sortedPoint pnt1 = {p0, 0., 1};
+  discrete.push_back(pnt1);
+  sortedPoint pnt2 = {p3, 1., -1};
+  discrete.push_back(pnt2);
   decasteljau(tol, discrete, 0, p0, p1, p2, p3, 0., 1);
   sortedPointToVector(discrete, pts, ts);
 }
@@ -110,8 +115,10 @@ static void decasteljau(double tol, std::vector<sortedPoint> &discrete, int pos,
 void decasteljau(double tol, const std::vector<SPoint3> &controlPoints, std::vector<SPoint3> &pts, std::vector<double> &ts)
 {
   std::vector<sortedPoint> discrete;
-  discrete.push_back((sortedPoint) {controlPoints[0], 0., 1});
-  discrete.push_back((sortedPoint) {controlPoints.back(), 1., -1});
+  sortedPoint pnt1 = {controlPoints[0], 0., 1};
+  discrete.push_back(pnt1);
+  sortedPoint pnt2 = {controlPoints.back(), 1., -1};
+  discrete.push_back(pnt2);
   decasteljau(tol, discrete, 0, controlPoints, 0., 1);
   sortedPointToVector(discrete, pts, ts);
 }