老弟兴奋的说:哥,我发现了 Linus Torvalds git 代码里的 bug - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
52coder
V2EX    程序员

老弟兴奋的说:哥,我发现了 Linus Torvalds git 代码里的 bug

  •  
  •   52coder 2020-10-10 00:30:12 +08:00 6679 次点击
    这是一个创建于 1911 天前的主题,其中的信息可能已经有所发展或是发生改变。

    读大三的老弟最近喜欢上了 c/c++,看 c/c++的源码,他告诉我他发现了 Linus Torvalds git 仓库里的 bug (程序 bug + 内存泄露 + 段错误),然后我说你赶紧提 PR 呀,看了半天他说的其中一个 bug init-db.c 没发现问题,各种怀疑人生,一问才知道是第一版 git. 其中一个 bug

    sha1_dir = getenv(DB_ENVIRONMENT); if (sha1_dir) { struct stat st; if (!stat(sha1_dir, &st) < 0 && S_ISDIR(st.st_mode)) return 0; fprintf(stderr, "DB_ENVIRONMENT set to bad directory %s: ", sha1_dir); } 

    stat 返回 0 或 -1,非零加!结果为 0,0 加!结果为 1,这里<0 条件永远不成立?各位老哥们,这里我没理解错吧,别误导了我弟,哈哈哈哈。

    顺带求一份适合深入学习的 C++开源代码( C 的话老弟专心看 redis 了,时不时问我一些问题,我也跟着学习下 redis,到时候再被八股文,岂不美滋滋?)

    第 1 条附言    2020-10-10 09:19:42 +08:00
    搭车同求一份高质量 C++源码,适合深度学习,入门难度不大,参考 c redis 。
    17 条回复    2020-10-10 23:30:57 +08:00
    mywaiting
        1
    mywaiting  
       2020-10-10 00:42:43 +08:00
    虽然我不懂 C/CPP 但是我觉得 Linus 没有写错,是的,脑残粉就是这么无脑 [摊手~]~
    52coder
        3
    52coder  
    OP
       2020-10-10 09:16:25 +08:00
    @timothyqiu 感谢老铁,昨天太晚,没去翻提交记录
    52coder
        4
    52coder  
    OP
       2020-10-10 09:17:39 +08:00
    @mywaiting 看第一个版本的 git,我给我老弟讲要学习里面的理念(虽然我没看过,但这话放之四海皆准[doge])
    mywaiting
        5
    mywaiting  
       2020-10-10 10:44:21 +08:00   1
    @52coder 第一个版本的 Git 单纯从代码上感觉没太多亮点,基本就是熟手的 C/CPP 水平

    然而可以从高处抽象出 tree 和 blob 这两个实现然后实现一套完整的分布式版本管理,整个思路和体系很值得学习

    化繁为简,用一千多行代码就高效完成整个系统的搭建,短小精悍,更是项目实现中的典范,这个才真值得学习
    52coder
        6
    52coder  
    OP
       2020-10-10 11:41:57 +08:00
    @mywaiting 是的,非常赞同你说的这个,当然我也建议我弟从提交记录开始往后躲看看,为什么要这么高,抽象和设计就要自己消化和吸收了。
    DiamondY
        7
    DiamondY  
       2020-10-10 11:46:31 +08:00
    在 C 一般会这样定义,true:-1 false:0

    那样写也不算错,但去掉更准确,有些人或编译器会把 true 定义成 1
    DiamondY
        8
    DiamondY  
       2020-10-10 11:58:42 +08:00
    @DiamondY #7 这里应该把编译器去掉,跟那没关系
    在有符号判断里面 ! 0 == -1
    52coder
        9
    52coder  
    OP
       2020-10-10 12:52:39 +08:00
    @DiamondY 不太明白兄弟你在说什么,你是不是理解混~和!的用法了?你方便提供个 demo 吗?
    52coder
        10
    52coder  
    OP
       2020-10-10 12:56:03 +08:00
    @DiamondY C 里一般 true 1 ,false 0,不是-1,即使是-1,上面那个代码也是错的,你可以写 demo 验证下。
    hwdef
        11
    hwdef  
       2020-10-10 13:26:08 +08:00
    源码,,既然看了 redis 的话,,可以看看另一个 k/v 数据库,leveldb,也值得学习,也不长。
    DiamondY
        12
    DiamondY  
       2020-10-10 13:44:11 +08:00
    @52coder 是搞混了~和!,估计上午脑子进水了
    C 里面判断只是认为 0 值为 false,非 0 就是 true,虽然标准库里面 true 是定义成 1,但定义成-1 也没错的
    52coder
        13
    52coder  
    OP
       2020-10-10 14:13:42 +08:00
    @hwdef 感谢推荐,leveldb 和 redis 有种相互补充的感觉,哈哈哈,多谢推荐
    berrx
        14
    berrx  
       2020-10-10 14:16:02 +08:00
    哥, 咱家有钱了
    52coder
        15
    52coder  
    OP
       2020-10-10 14:21:00 +08:00
    @berrx 哈哈哈哈,要是这样做梦都笑醒了,可是农村不会拆迁,哈哈哈哈
    maigebaoer
        16
    maigebaoer  
       2020-10-10 14:36:35 +08:00 via Android
    害,我们这些应用侧的,还是直接背八股文吧
    52coder
        17
    52coder  
    OP
       2020-10-10 23:30:57 +08:00
    @maigebaoer 我也应用测的,主要 java,偶尔 go,看看 redis 源码,再背八股文可能好背一些吧.
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2654 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 09:21 PVG 17:21 LAX 01:21 JFK 04:21
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86