找回密码
 点一下
查看: 1887|回复: 2

发现code bug!

[复制链接]
发表于 2008-8-20 15:24:49 | 显示全部楼层 |阅读模式
来看下面这段函数
[codes=jass]
function TimerRun takes real timeout,boolean periodic,code handlerFunc returns nothing
           call TimerStart(CreateTimer(), timeout, periodic, handlerFunc)
endfunction
[/codes]
然后
[codes=jass]
function aa takes nothing returns nothing
           call TimerRun( 1,false, null)
endfunction
[/codes]
结果是。。到时间后魔兽崩溃直接退出,经过n遍测试
要把第一段代码改成
[codes=jass]
function TimerRun takes real timeout,boolean periodic,code handlerFunc returns nothing
    if handlerFunc!=null then
        call TimerStart(CreateTimer(), timeout, periodic, handlerFunc)
    else
        call TimerStart(CreateTimer(), timeout, periodic, null)
    endif
endfunction
[/codes]
就不会有任何问题
这说明如果传递一个为null的code会出现问题,具体原因不明
建议开个分区叫魔兽神秘bug集会..bz太玩人了..

评分

参与人数 1威望 +1 收起 理由
kook + 1 嗯~值得注意

查看全部评分

发表于 2008-8-21 02:09:49 | 显示全部楼层
从pj的代码来看,null是一个不属于handle,code,integer....类型的常量(也就是它是另外一个类型),也许是这个原因吧。
回复

使用道具 举报

发表于 2008-8-21 02:30:38 | 显示全部楼层
null  是空值。。
也许code无法传递空值?
local code1= null
local code2=code1 会怎么样

不过是到计时器结束才崩溃的话只是与timer函数有关
也许内容处理上是直接填null的话到时间就什么也不做
用参数了以后才傻呼呼的去调用函数0自己挂掉
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-5-2 14:53 , Processed in 0.139958 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表