其实和他没多大关系,但是 tj 应该是没意识到,由于值传递这样指针的置空确实没有意义
https://github.com/clibs/list/pull/9 ,
在 clibs 的包括近两千 star 的项目都没人发现这个问题
https://github.com/clibs/clib/blob/master/deps/list/list_iterator.c#L61
1
daocheng 2016-02-16 14:23:34 +08:00
2014 年的坟都挖啊
|
2
kingddc314 OP @daocheng 没有挖坟啦,就是看代码时发现了问题,疑惑为什么没人提,结果翻到了这个
|
3
zcbenz 2016-02-16 14:31:31 +08:00
任谁都会犯错的,去提个 PR 不就好了。
|
4
matsuijurina 2016-02-16 14:41:27 +08:00 via Android
大神没计算机学位,接触 nodejs 以前是做 wordpress 模板的网页外包公司的设计师。 Bug 这么少已经是不可思议了。
|
5
tedd 2016-02-16 14:44:30 +08:00 via iPhone
@matsuijurina 真的?太🐃了!
|
6
kingddc314 OP @matsuijurina 感觉大神不是一个人,太高产了
|
7
chmlai 2016-02-16 16:17:25 +08:00 3
tj 真是一个传奇的杀马特
|
8
breeswish 2016-02-16 16:30:03 +08:00
然而.. 这个 PR 原本的意思是,设置为 NULL 可以避免以后再错误地释放它,这是一种防御性的代码,就像 assert 一样, assert 出 false 的代码根本不能跑是吧,所以 assert 里的一定是 true 的,那么为什么还要 assert 呢?显然意义不在于此,而在于可以避免以后犯错…理论上还可以提高安全性
|
11
aisk 2016-02-16 16:44:25 +08:00
主要是用 clib 的人太少了。
|
12
myid 2016-02-16 18:08:14 +08:00 via iPhone
tj 是谁?
|
13
kingddc314 OP |
15
think2011 2016-02-16 21:30:29 +08:00
tj 大神啊!
|
16
kingddc314 OP |
17
breeswish 2016-02-16 22:38:09 +08:00
@kingddc314 从其他函数写法来看似乎是为了该代码内不犯错,即如果后面还加代码的话不至于有问题。不过确实如你所说,不能避免用户犯错(调用多次 list_iterator_destroy )时正常。
|