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

欢迎!请参阅关于页面以获取更多关于此如何工作的信息。

0
Clojure

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

(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

该补丁更改将add-annotation的defn-更改为defn,但这似乎与补丁的目的无关?

0
by

评论者:mjg123

亚历克斯,谢谢你这么快就看了,关于add-annotation的错误很抱歉。请查看clj-1647_3.patch。

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