操作
バグ #1776
完了get_port_profile()で例外が出るケースがあるがそれをエラーコードにする。
開始日:
2010/08/16
期日:
進捗率:
100%
予定工数:
説明
OpenRTM-aist開発者の皆様
株式会社セックの大和田です。
お世話になっております。
OpenRTM-aist-1.0.0-RELEASEの複合コンポーネントの
コンポーネントプロファイル取得について、
ご検討していただきたい点がございます。
複合コンポーネントのコンポーネントプロファイルを、
取得するとき、子コンポーネントが終了していた場合、
複合コンポーネントがアボートします。
コンソールには以下のようなメッセージが表示されます。
Assertion failed: false, file c:\final_build\vc9-4\openrtm-aist\rtm\rtobject.cpp, line 694
具体的には、RTObject_impl::get_component_profile()で、
コンポーネントプロファイルを取得するとき、
ポートプロファイルリストを取得しております。
(RTObject.cppの687行目)
このとき、PortAdmin::getPortProfileList()では、
リストに既に存在していないポートがあった場合、
存在していないポートに対して、PortBase::get_port_profile()
を実行しようとするため、Exceptionが発生し、
コンポーネントがアボートしてしまいます。
(PortAdmin.hの537行目)
複合コンポーネントがアボートせず、何らかのエラーを返すような
実装にしていただくことはできないでしょうか。
操作