2

我相信我已经发现并修复了 AUnit 中的一个错误,它是 Ada 的 GNAT 编译器工具的一部分。

向 AdaCore 提交 GNAT 工具社区版本的错误的最佳方式是什么?

以下程序使用当前版本的编译器 GNAT Community 2020 (20200429-84) 静默中止

with Ada.Text_IO;use Ada.Text_IO;
with AUnit.Test_Filters;
with AUnit.Tests;

procedure Message_Allocation is

   package Filter_Package is
      type Filter_Type is new AUnit.Test_Filters.Name_Filter with null record;

      function Is_Active
     (Filter : Filter_Type;
      T      : AUnit.Tests.Test'Class) return Boolean;

   end Filter_Package;

   package body Filter_Package is
      function Is_Active
     (Filter : Filter_Type;
      T      : AUnit.Tests.Test'Class) return Boolean is begin return true; end is_active;
   end Filter_Package;

   filter : Filter_Package.filter_type;

begin
   Put_Line ("set 1st filter");
   filter.set_name ("abc");
   Put_Line ("set 2nd filter");
   filter.set_name ("xyz");
   Put_Line ("2nd filter set");

end Message_Allocation;

该错误位于文件 aunit.adb 中的 Message_Free 过程中。以下是补丁版本。更改是调用 AUnit.Memory.AUnit_Free 的参数。

   procedure Message_Free (Msg : in out Message_String) is
   begin
      if Msg /= null then
         AUnit.Memory.AUnit_Free (Msg.all'address - System.Address'size/8);
         Msg := null;
      end if;
   end Message_Free;
4

2 回答 2

2

邮件至:report (at)(制造 GNAT 的公司名称).com

您可以通过有意义的标题和有用的信息来增加您的机会,以显示错误(通常是复制器示例)和您的修复。

于 2020-07-26T13:38:55.047 回答
1

扩展@Zerte 答案:还有其他两个选项:

  1. 您可以在 Github 的公共 AUnit 存储库中报告错误,提出拉取请求:

    https://github.com/AdaCore/aunit

    在我看来,这可能是比我的第二个提议更好的选择

  2. 您可以在此处使用 AdaCore 软件的社区版本的联系 Web 表单:

    https://www.adacore.com/community/contact

    根据我自己的经验,你可以在那里得到相当快的答案。

于 2020-07-26T16:03:29.177 回答