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

欢迎!请查看关于页面以获取更多此处的工作信息。

0
Clojure

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

(partition 0 [1 2 3])
(partition 1 -1 [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
by

评论者:alexmiller

去做吧

0
by

评论者:alexmiller

抱歉,浏览器失败 :)

0
by

评论者:kworam

感谢你发现这个问题 Matthew,我很感激!

0
by

评论者:kworam

感谢你发现这个问题 Matthew,我很感激!

0
by
_评论者:alex+import_

新补丁:clj-1647.patch

包括测试,减少了空白字符的变化,手动抛出 IAEs。我将很快做一些基本的基准测试,尽管我预计开销会很低,因为我们只需要检查一次参数。

Kevin,你的补丁为什么对 partition-all 有效但对 partition 无效,因为 partition 在引导过程中定义得相当早,而 {:pre .. :post ..} 映射直到后来增强后才被 defn 读取。
0
by

评论者:kworam

感谢你解决这个问题 Matthew!

0
by

评论者:alexmiller

补丁看起来基本良好。一些小改动

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

评论者:mjg123

我为这个问题的其他补丁添加了clj-1647_2.patch来取代。在提交消息中添加了Jira引用,并在可能的情况下使用defn-(defn-是在添加了^:private元数据后定义的)。

0

评论者:alexmiller

这个补丁更改了从defn-到defn但这似乎与补丁的意图无关?

0

评论者:mjg123

谢谢您这么快地查看 Alex - 对 add-annotation 中的错误感到抱歉。请查看 clj-1647_3.patch

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