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

评论者: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

Alex,谢谢你这么快就处理了这个问题 - 关于add-annotation的错误对不起。请查看clj-1647_3.patch

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