@@ -241,9 +241,12 @@ bool ServoController::setJointAngles(const OpenHRP::ServoControllerService::dSeq
241241{
242242 if ( ! serial ) return true ;
243243
244- int id[servo_id.size ()];
245- double tms[servo_id.size ()];
246- double rad[servo_id.size ()];
244+ int * id;
245+ id = new int [servo_id.size ()];
246+ double * tms;
247+ tms = new double [servo_id.size ()];
248+ double * rad;
249+ rad = new double [servo_id.size ()];
247250 for ( unsigned int i = 0 ; i < servo_id.size (); i++ ) {
248251 id[i] = servo_id[i];
249252 tms[i] = tm;
@@ -254,6 +257,9 @@ bool ServoController::setJointAngles(const OpenHRP::ServoControllerService::dSeq
254257 return false ;
255258 }
256259 serial->setPositions (servo_id.size (), id, rad, tms);
260+ delete[] id;
261+ delete[] tms;
262+ delete[] rad;
257263 return true ;
258264}
259265
@@ -318,9 +324,12 @@ bool ServoController::setJointAnglesOfGroup(const char *gname, const OpenHRP::Se
318324 std::cerr << " [ERROR] " << m_profile.instance_name << " : size of servo.id(" << angles.length () << " ) is not correct, expected" << len << std::endl;
319325 return false ;
320326 }
321- int id[len];
322- double tms[len];
323- double rad[len];
327+ int * id;
328+ id = new int [len];
329+ double * tms;
330+ tms = new double [len];
331+ double * rad;
332+ rad = new double [len];
324333 for ( unsigned int i = 0 ; i < len; i++ ) {
325334 id[i] = joint_groups[gname][i];
326335 tms[i] = tm;
@@ -334,6 +343,9 @@ bool ServoController::setJointAnglesOfGroup(const char *gname, const OpenHRP::Se
334343 rad[i] = (angles.get_buffer ()[i])*dir+offset;
335344 }
336345 serial->setPositions (servo_id.size (), id, rad, tms);
346+ delete[] id;
347+ delete[] tms;
348+ delete[] rad;
337349 }
338350 return true ;
339351}
0 commit comments