プロジェクト

全般

プロフィール

バグ #572

完了

CompositeComponentView でポート状態(公開/非公開)を設定できないことがある。

匿名ユーザー さんが15年以上前に追加. 15年以上前に更新.

ステータス:
終了
優先度:
通常
担当者:
-
対象バージョン:
-
開始日:
2009/04/24
期日:
進捗率:

100%

予定工数:

説明

  • 現象
    CompositeComponentView でポート状態(公開/非公開)を設定できないことがある。
  • 再現手順
    以下に再現手順を示します。(以下では controllerComponent と MotorComponent を使用します。)
    手順 1:SensorComponent と MotorComponent を SystemDiagramEditor ドラッグ&ドロップします。
    手順 2:SensorComponent をクリックし、ctrl を押しながら MotorComponent をクリックして複合化します。
    ( ポートは全て非公開。)
    CompositeComponentView には 上から Sensor in,Sensor out,Motor in,Motor out と並びます。
    手順 3:CompositeComponentView から Sensor in,Motor in,Motor out をチェックして「適用」ボタンをクリックします。
    手順 4:SystemDiagramEditor でポートが公開されたことを確認して、CompositeComponentView から Sensor out をチェックして「適用」をおします。
    手順 5: 複合コンポーネントの SystemDiagramEditor を開くと公開されていないポートが存在します。

匿名ユーザー さんが15年以上前に更新

補足
  • バージョン:windows版
  • 現象:_DEBUG_CODE マクロで停止する。

匿名ユーザー さんが15年以上前に更新

  • 原因:
    periodicECOrganization::updateDelegatedPorts()で現在ポート状態とユーザが設定したポートを比較して非公開するポートと公開するポートを選定している。
    ポート状態を比較する処理(std::set_difference) へ入力する現在ポート情報とユーザの設定値がそれぞれ vectorで定義されている。(oldPorts,newPorts)
    それらが、sort されていなかったために、非公開するポートと公開するポートが正常に選定できず、また、_DEBUG_ ORDERが発生していた。
    http://www.sgi.com/tech/stl/set_difference.html
  • 対策:
    oldPorts,newPorts をそれぞれ sort をしてから std::set_difference へ渡すように変更した。

匿名ユーザー さんが15年以上前に更新

  • ステータス新規 から 終了 に変更
  • 進捗率0 から 100 に変更

他の形式にエクスポート: Atom PDF