具体位置:geekos-0.3.0\src\project6\src\common\string.c

版本是geekos-0.3.0,不知道该BUG是不是故意留下来的^_^

原来的函数如下:

int  memcmp( const   void   * s1_,  const   void   * s2_, size_t n)
{
    
const  signed  char   * s1  =  s1_,  * s2  =  s2_;

    
while  (n  >   0 {          // 注意这里,n的值没有改变
      int  cmp  =   * s1  -   * s2;
     
if  (cmp  !=   0 )
         
return  cmp;
     
++ s1;
     
++ s2;
    }


    
return   0 ;
}



修正的方法很简单:

while (n-- > 0) {   //处理n的值就OK了