2024 年 Clojure 状态调查! 分享您的想法。

欢迎!有关如何使用本网站的信息,请参阅 关于 页面。

0
Clojure

如果您将非正数的 'n' 或 'step' 传递给 partition,则会得到无限循环。以下是一些示例:

(partition 0 (link: 1 2 3))
(partition 1 -1 (link: 1 2 3))

原因:partition 和 partition-all 并未检查 n 和 step 是否为正数。

解决方案:在 partition 和 partition-all 中添加对 n 和 step 是否为正数的检查。

补丁:clj-1647_3.patch

预审者:Alex Miller

29 个回答

0

评论由:alexmiller

试试吧

0

评论由:alexmiller

试试吧

0

评论由:alexmiller

试试吧

0

评论由:alexmiller

试试吧

0

评论由:alexmiller

抱歉,浏览器失败 :)

0

评论者:kworam

感谢你指出这个问题,Matthew,我非常感激!

0

评论者:kworam

感谢你指出这个问题,Matthew,我非常感激!

0
_评论者:alex+import_

新的补丁:clj-1647.patch

包含测试,空白更改较少,手动抛出IAEs。我很快将进行一些基本基准测试,尽管我预计开销相当低,因为我们只需要检查一次参数。

Kevin,你的补丁对partition-all有效但对partition无效的原因是partition在引导过程中定义较早,并且在进一步增强之前,{{defn-}}不会读取{:pre .. :post ..}映射。
0

评论者:kworam

感谢你解开了这个谜团,Matthew!

0

评论由:alexmiller

补丁看起来基本不错。一些小改动

  • internal-partition和internal-partition-all应该用{{defn-}}标记为私有。
  • 提交描述应以"CLJ-1647"开始。
0

评论者:mjg123

我为这个问题添加了clj-1647_2.patch以替代其他补丁。Jira 引用已添加到提交消息,并在可能的情况下使用 defn-(defn- 在定义私有可能函数后才定义,但已手动添加 ^:private 元数据)。

0
by

评论由:alexmiller

补丁修改了从 defn- 到 defn 的 add-annotation,但这看起来与补丁的目的似乎无关?

0
by

评论者:mjg123

谢谢你这么快就回复了Alex - 对于 add-annotation 中的那个错误感到抱歉。请参见 clj-1647_3.patch

0
by
参考: https://clojure.atlassian.net/browse/CLJ-1647(由 kworam 报告)
...