Skip to content

Commit 917580a

Browse files
committed
[ServoController] Don't initialize array with non-const variable to allocate array correctly
1 parent 8d57802 commit 917580a

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

rtc/ServoController/ServoController.cpp

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)