--- a/ode/demo/demo_basket.cpp
+++ b/ode/demo/demo_basket.cpp
@@ -159,8 +159,12 @@ static void simLoop (int pause)
   dsSetColor (1,1,1);
   const dReal *SPos = dBodyGetPosition(sphbody);
   const dReal *SRot = dBodyGetRotation(sphbody);
-  float spos[3] = {SPos[0], SPos[1], SPos[2]};
-  float srot[12] = { SRot[0], SRot[1], SRot[2], SRot[3], SRot[4], SRot[5], SRot[6], SRot[7], SRot[8], SRot[9], SRot[10], SRot[11] };
+  float spos[3];
+  for (size_t i = 0; i < sizeof(spos); ++i)
+    spos[i] = SPos[i];
+  float srot[12];
+  for (size_t i = 0; i < sizeof(srot); ++i)
+    srot[i] = SRot[i];
   dsDrawSphere
   (
     spos, 
@@ -174,11 +178,14 @@ static void simLoop (int pause)
 
   const dReal* Pos = dGeomGetPosition(world_mesh);
   //dIASSERT(dVALIDVEC3(Pos));
-  float pos[3] = { Pos[0], Pos[1], Pos[2] };
-
+  float pos[3];
+  for (size_t i = 0; i < sizeof(pos); ++i)
+    pos[i] = Pos[i];
   const dReal* Rot = dGeomGetRotation(world_mesh);
   //dIASSERT(dVALIDMAT3(Rot));
-  float rot[12] = { Rot[0], Rot[1], Rot[2], Rot[3], Rot[4], Rot[5], Rot[6], Rot[7], Rot[8], Rot[9], Rot[10], Rot[11] };
+  float rot[12];
+  for (size_t i = 0; i < sizeof(rot); ++i)
+    rot[i] = Rot[i];
 
   int numi = sizeof(world_indices)  / sizeof(dTriIndex);
 
--- a/ode/demo/demo_cyl.cpp
+++ b/ode/demo/demo_cyl.cpp
@@ -171,8 +171,13 @@ static void simLoop (int pause)
 #ifdef BOX
   const dReal *BPos = dBodyGetPosition(boxbody);
   const dReal *BRot = dBodyGetRotation(boxbody);
-  float bpos[3] = {BPos[0], BPos[1], BPos[2]};
-  float brot[12] = { BRot[0], BRot[1], BRot[2], BRot[3], BRot[4], BRot[5], BRot[6], BRot[7], BRot[8], BRot[9], BRot[10], BRot[11] };
+  float bpos[3];
+  for (size_t i = 0; i < sizeof(bpos); ++i)
+    bpos[i] = BPos[i];
+  float brot[12];
+  for (size_t i = 0; i < sizeof(brot); ++i)
+    brot[i] = BRot[i];
+
   float sides[3] = {BOXSZ, BOXSZ, BOXSZ};
   dsDrawBox
   (
@@ -184,8 +189,12 @@ static void simLoop (int pause)
 #ifdef CYL
   const dReal *CPos = dGeomGetPosition(cylgeom);
   const dReal *CRot = dGeomGetRotation(cylgeom);
-  float cpos[3] = {CPos[0], CPos[1], CPos[2]};
-  float crot[12] = { CRot[0], CRot[1], CRot[2], CRot[3], CRot[4], CRot[5], CRot[6], CRot[7], CRot[8], CRot[9], CRot[10], CRot[11] };
+  float cpos[3];
+  for (size_t i = 0; i < sizeof(cpos); ++i)
+    cpos[i] = CPos[i];
+  float crot[12];
+  for (size_t i = 0; i < sizeof(crot); ++i)
+    crot[i] = CRot[i];
   dsDrawCylinder
   ( 
 //    dBodyGetPosition(cylbody),
@@ -202,10 +211,14 @@ static void simLoop (int pause)
   dsSetTexture (DS_NONE);
 
   const dReal* Pos = dGeomGetPosition(world_mesh);
-  float pos[3] = { Pos[0], Pos[1], Pos[2] };
+  float pos[3];
+  for (size_t i = 0; i < sizeof(pos); ++i)
+    pos[i] = Pos[i];
 
   const dReal* Rot = dGeomGetRotation(world_mesh);
-  float rot[12] = { Rot[0], Rot[1], Rot[2], Rot[3], Rot[4], Rot[5], Rot[6], Rot[7], Rot[8], Rot[9], Rot[10], Rot[11] };
+  float rot[12];
+  for (size_t i = 0; i < sizeof(rot); ++i)
+    rot[i] = Rot[i];
 
   int numi = sizeof(world_indices)  / sizeof(dTriIndex);
 
--- a/ode/demo/demo_cylvssphere.cpp
+++ b/ode/demo/demo_cylvssphere.cpp
@@ -151,8 +151,12 @@ static void simLoop (int pause)
 
   const dReal *CPos = dBodyGetPosition(cylbody);
   const dReal *CRot = dBodyGetRotation(cylbody);
-  float cpos[3] = {CPos[0], CPos[1], CPos[2]};
-  float crot[12] = { CRot[0], CRot[1], CRot[2], CRot[3], CRot[4], CRot[5], CRot[6], CRot[7], CRot[8], CRot[9], CRot[10], CRot[11] };
+  float cpos[3];
+  for (size_t i = 0; i < sizeof(cpos); ++i)
+    cpos[i] = CPos[i];
+  float crot[12];
+  for (size_t i = 0; i < sizeof(crot); ++i)
+    crot[i] = CRot[i];
   dsDrawCylinder
   (
     cpos,
@@ -163,8 +167,12 @@ static void simLoop (int pause)
 
   const dReal *SPos = dBodyGetPosition(sphbody);
   const dReal *SRot = dBodyGetRotation(sphbody);
-  float spos[3] = {SPos[0], SPos[1], SPos[2]};
-  float srot[12] = { SRot[0], SRot[1], SRot[2], SRot[3], SRot[4], SRot[5], SRot[6], SRot[7], SRot[8], SRot[9], SRot[10], SRot[11] };
+  float spos[3];
+  for (size_t i = 0; i < sizeof(spos); ++i)
+    spos[i] = SPos[i];
+  float srot[12];
+  for (size_t i = 0; i < sizeof(srot); ++i)
+    srot[i] = SRot[i];
   dsDrawSphere
   (
     spos,
