プロジェクト

全般

プロフィール

バグ #569

完了

複合コンポーネントの要素コンポーネントを削除すると例外が発生する。(windows)

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

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

100%

予定工数:

説明

  • 現象:
    windows 版で 複数 RTC を起動し、RTSystemEditor でそれら複合する。
    複合したコンポーネントを構成する要素コンポーネントを RTSystemEditor の SystemDiagramEditor から delete とすると "Composite.exe [704] でハンドルされていない Win32 の例外が発生しました。 " が発生する。

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

  • ステータス新規 から 終了 に変更
  • 原因: (Linux 版では本現象は発生しませんでした。)
    PeriodicECOrganization::remove_member で 例外が発生していました。
    remove_member で vector である m_rtcMembers の要素を erase しているのですが、vector::erase() の挙動が g++ と vc++ で異なるなるようです。
    for 文の初期化で vector::end() で末尾のイテレータを取得して比較していますが、 vc++ の場合、 erase() を実行した後は end() で末尾イテレータをの取得しなおす必要があります。
    ( 恐らく、erase() で削除して残った要素を詰めるための処理が g++ と vc++ で差異があると思われます。)
  • 対策:
    for 文の初期化のend()で取得したイテレータを使用し続けずに、毎回取得するようにしました。
  • 確認:
    Win32 の例外が発生しなくなりました。(Linux でも問題なく動作することを確認しました。)

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

  • 進捗率0 から 100 に変更

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