Add missing PointToLocal call in mjCPlugin copy constructor.
PiperOrigin-RevId: 752486555 Change-Id: I08b14476b9098e6473a4c00918ef3f9a287f35f6
This commit is contained in:
committed by
Copybara-Service
parent
4137a4c774
commit
75f196c7ef
@@ -861,6 +861,17 @@ class SpecsTest(absltest.TestCase):
|
||||
self.assertEqual(model.nplugin, 1)
|
||||
self.assertEqual(model.npluginattr, 7)
|
||||
self.assertEqual(model.body_plugin[1], 0)
|
||||
attributes = (''.join([chr(i) for i in model.plugin_attr]).split(chr(0)))
|
||||
self.assertEqual(attributes[:2], ['10', '1'])
|
||||
|
||||
copy = spec.copy() # before assigning the new config
|
||||
wrong_config = {'wrong': '10', 'bend': '1'}
|
||||
for s in [spec, copy]:
|
||||
s.plugins[0].config = wrong_config
|
||||
with self.assertRaisesRegex(
|
||||
ValueError, "Error: unrecognized attribute 'plugin:wrong'"
|
||||
):
|
||||
s.compile()
|
||||
|
||||
def test_recompile_error(self):
|
||||
main_xml = """
|
||||
|
||||
@@ -7271,6 +7271,8 @@ mjCPlugin::mjCPlugin(mjCModel* _model) {
|
||||
spec.plugin_name = &plugin_name;
|
||||
spec.name = &name;
|
||||
spec.info = &info;
|
||||
|
||||
PointToLocal();
|
||||
}
|
||||
|
||||
|
||||
@@ -7289,11 +7291,20 @@ mjCPlugin& mjCPlugin::operator=(const mjCPlugin& other) {
|
||||
parent = this;
|
||||
plugin_slot = other.plugin_slot;
|
||||
}
|
||||
PointToLocal();
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void mjCPlugin::PointToLocal() {
|
||||
spec.element = static_cast<mjsElement*>(this);
|
||||
spec.name = &name;
|
||||
spec.info = &info;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// compiler
|
||||
void mjCPlugin::Compile(void) {
|
||||
mjCPlugin* plugin_instance = this;
|
||||
|
||||
@@ -1587,6 +1587,9 @@ class mjCPlugin : public mjCPlugin_ {
|
||||
mjCPlugin(mjCModel*);
|
||||
mjCPlugin(const mjCPlugin& other);
|
||||
mjCPlugin& operator=(const mjCPlugin& other);
|
||||
|
||||
void PointToLocal();
|
||||
|
||||
mjsPlugin spec;
|
||||
mjCBase* parent; // parent object (only used when generating error message)
|
||||
int plugin_slot; // global registered slot number of the plugin
|
||||
|
||||
Reference in New Issue
Block a user