kingddc314

一直追随 tj 大神,却不小心在 Github 上活捉到大神忽略的一个错误!!!

  •  
  •   kingddc314 · Feb 16, 2016 · 6515 views
    This topic created in 3747 days ago, the information mentioned may be changed or developed.

    其实和他没多大关系,但是 tj 应该是没意识到,由于值传递这样指针的置空确实没有意义
    https://github.com/clibs/list/pull/9
    在 clibs 的包括近两千 star 的项目都没人发现这个问题
    https://github.com/clibs/clib/blob/master/deps/list/list_iterator.c#L61

    17 replies    2016-02-16 22:38:09 +08:00
    daocheng
        1
    daocheng  
       Feb 16, 2016
    2014 年的坟都挖啊
    kingddc314
        2
    kingddc314  
    OP
       Feb 16, 2016
    @daocheng 没有挖坟啦,就是看代码时发现了问题,疑惑为什么没人提,结果翻到了这个
    zcbenz
        3
    zcbenz  
       Feb 16, 2016
    任谁都会犯错的,去提个 PR 不就好了。
    matsuijurina
        4
    matsuijurina  
       Feb 16, 2016 via Android
    大神没计算机学位,接触 nodejs 以前是做 wordpress 模板的网页外包公司的设计师。 Bug 这么少已经是不可思议了。
    tedd
        5
    tedd  
       Feb 16, 2016 via iPhone
    @matsuijurina 真的?太🐃了!
    kingddc314
        6
    kingddc314  
    OP
       Feb 16, 2016
    @matsuijurina 感觉大神不是一个人,太高产了
    chmlai
        7
    chmlai  
       Feb 16, 2016   ❤️ 3
    tj 真是一个传奇的杀马特
    breeswish
        8
    breeswish  
       Feb 16, 2016
    然而.. 这个 PR 原本的意思是,设置为 NULL 可以避免以后再错误地释放它,这是一种防御性的代码,就像 assert 一样, assert 出 false 的代码根本不能跑是吧,所以 assert 里的一定是 true 的,那么为什么还要 assert 呢?显然意义不在于此,而在于可以避免以后犯错…理论上还可以提高安全性
    sethverlo
        9
    sethverlo  
       Feb 16, 2016
    @chmlai 原来不止我一个人觉得杀马特。。。
    oxoxoxox
        10
    oxoxoxox  
       Feb 16, 2016
    @breeswish 防御性代码 +1
    我写代码经常这样,方便自己以后查 /改代码,也方便别人
    aisk
        11
    aisk  
       Feb 16, 2016
    主要是用 clib 的人太少了。
    myid
        12
    myid  
       Feb 16, 2016 via iPhone
    tj 是谁?
    kingddc314
        13
    kingddc314  
    OP
       Feb 16, 2016
    @breeswish
    @oxoxoxox 其实问题是函数内部赋值为 null ,只是赋值的一个指针拷贝,在上层函数调用栈的指针依旧不为空
    snnn
        14
    snnn  
       Feb 16, 2016 via Android
    @myid 同问
    think2011
        15
    think2011  
       Feb 16, 2016
    tj 大神啊!
    kingddc314
        16
    kingddc314  
    OP
       Feb 16, 2016
    @myid
    @snnn node , go 系大神, https://github.com/tj
    breeswish
        17
    breeswish  
       Feb 16, 2016
    @kingddc314 从其他函数写法来看似乎是为了该代码内不犯错,即如果后面还加代码的话不至于有问题。不过确实如你所说,不能避免用户犯错(调用多次 list_iterator_destroy )时正常。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   955 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 142ms · UTC 20:10 · PVG 04:10 · LAX 13:10 · JFK 16:10
    ♥ Do have faith in what you're doing.