操作
バグ #4195
未完了モジュールロードパスを複数設定した場合の不具合
開始日:
2017/09/11
期日:
進捗率:
100%
予定工数:
説明
モジュールロードパスを複数設定して、Manager::createComponentでコンポーネントを生成した場合、対象のコンポーネントが存在するにもかかわらず、生成できないことがある。
再現例
再現例
- ./RTMExamples/Composite に Motor.java を格納しておく。
- rtc.confで以下を設定
manager.modules.load_path: ./RTMExamples/Composite,/home/t-katami/work/OpenRTM-aist-Java/jp.go.aist.rtm.RTC/bin/jp/go/aist/rtm/RTC/
- 以下のようにコンポーネントを生成するとnullが帰ってくる。
RTObject_impl mcomp = mgr.createComponent("Motor");
原因
ModuleManager::load()でパスとモジュール名で検索する。
2つのモジュールパスの一つ目で見つかったにもかかわらず、次にパスでも検索している。
二つ目のパスで見つからなかった場合、その結果が採用されてしまっている。
対策
ModuleManager::load()でパスとモジュール名で検索して、見つかった時点で、検索をやめて、結果を返すように修正する。
操作