sunnydragon 发表于 2013-10-7 16:02:53

这个算 RTT1.1.1 存在的Bug?

我使用的官网下载下来来RTT1.1.1 稳定版   地址:http://www.rt-thread.org/node/71,在scheduler.c文件中的rt_exit_critical方法发现一处不理解的地方
我个人觉得    if (rt_thread_self() != RT_NULL);   这句判断语句后面直接多了一个分号,有点不合乎常理,显然没有起到判断的作用,请大家给分析下算不算Bug呢
源代码如下:/**
* This function will unlock the thread scheduler.
*/
void rt_exit_critical(void)
{
    register rt_base_t level;

    /* disable interrupt */
    level = rt_hw_interrupt_disable();

    rt_scheduler_lock_nest --;

    if (rt_scheduler_lock_nest <= 0)
    {
      rt_scheduler_lock_nest = 0;
      /* enable interrupt */
      rt_hw_interrupt_enable(level);

                if (rt_thread_self() != RT_NULL);
                rt_schedule();
    }
    else
    {
      /* enable interrupt */
      rt_hw_interrupt_enable(level);
    }
}

armstrong 发表于 2013-10-7 17:36:08

根据该函数的功能,推测出你说的的确是个BUG,不过我不是管理员,能找出错误你很了不起,大家感谢你。

utopia_zone1986 发表于 2013-10-8 10:19:06

if (rt_thread_self() != RT_NULL) 两种可能
1 是句废话
2 bug

sunnydragon 发表于 2013-10-10 11:49:12

斑竹不在吗?

arda 发表于 2013-10-10 12:09:06

git 中的主线版本已经去掉了那一行,参考 391行。
https://github.com/RT-Thread/rt-thread/blob/master/src/scheduler.c
页: [1]
查看完整版本: 这个算 RTT1.1.1 存在的Bug?