找回密码
 点一下
查看: 1858|回复: 3

Union Bug 之` 忽略变量大小写``

[复制链接]
发表于 2009-2-20 02:55:17 | 显示全部楼层 |阅读模式
晚上在写数组绑定系统时``
遇到一些bug
试了好几次...发现原因..真是囧掉了

按Esc显示文本

udg_ABC和udg_i 是全局  大家猜下结果是如何```
[jass]
function Trig________________u_Actions takes nothing returns nothing
    local integer udg_ABC=1
    local integer udg_i=2
    local integer udg_abc=3
    local integer udG_Abc=4
    local integer udg_aBc=5
    local integer Udg_abC=6
    local integer udg_ABc=7   
    local integer udg_AbC=8   
    local integer uDg_ABC=9   
    local integer udg_aBC=10   
    local integer UDG_abc=11
    local integer UdG_I=12
    call DisplayTextToPlayer( Player(0), 0, 0, "udg_ABC=1     = "+I2S(udg_ABC))
    call DisplayTextToPlayer( Player(0), 0, 0, "udg_i=2       = "+I2S(udg_i))
    call DisplayTextToPlayer( Player(0), 0, 0, "udg_abc=3     = "+I2S(udg_abc))
    call DisplayTextToPlayer( Player(0), 0, 0, "udG_Abc=4     = "+I2S(udG_Abc))
    call DisplayTextToPlayer( Player(0), 0, 0, "udg_aBc=5     = "+I2S(udg_aBc))
    call DisplayTextToPlayer( Player(0), 0, 0, "Udg_abC=6     = "+I2S(Udg_abC))
    call DisplayTextToPlayer( Player(0), 0, 0, "udg_ABc=7     = "+I2S(udg_ABc))
    call DisplayTextToPlayer( Player(0), 0, 0, "udg_AbC=8     = "+I2S(udg_AbC))
    call DisplayTextToPlayer( Player(0), 0, 0, "uDg_ABC=9     = "+I2S(uDg_ABC))
    call DisplayTextToPlayer( Player(0), 0, 0, "udg_aBC=10    = "+I2S(udg_aBC))
    call DisplayTextToPlayer( Player(0), 0, 0, "UDG_abc=11    = "+I2S(UDG_abc))
    call DisplayTextToPlayer( Player(0), 0, 0, "UdG_I=12      = "+I2S(UdG_I))
endfunction

//===========================================================================
function InitTrig________________u takes nothing returns nothing
    set gg_trg________________u = CreateTrigger(  )
    call TriggerRegisterPlayerEvent(gg_trg________________u, Player(0), EVENT_PLAYER_END_CINEMATIC)
    call TriggerAddAction( gg_trg________________u, function Trig________________u_Actions )
endfunction
[/jass]

..结果 显示的数值都是 最后定义的那个变量````

竟然大小写都忽略了......


翻了下以前提到Union Bug 的文章似乎也都没 发现```

Union Bug 之` 忽略变量大小写``.w3m

17 KB, 下载次数: 20

评分

参与人数 1威望 +11 收起 理由
kook + 11 eh,新发现.

查看全部评分

发表于 2009-2-20 13:07:21 | 显示全部楼层
大力鼓励此发现!!!


看来UnionBug是扫描所有大/小写的相同字母的啊~~…………

不过这个UnionBug是在有局部变量覆盖全局变量的前提下发生的。
(也就是说,如果上面的局部变量没有udg_ABC这个名字的变量,那么那些udg_ABC的变体们就不会发生UnionBug)

你只要用替换,把与Globals里的变量同名的变量在函数里的变量改名就行了。
回复

使用道具 举报

发表于 2009-2-20 18:24:41 | 显示全部楼层
噢!  终于看到Union Bug的研究了
回复

使用道具 举报

发表于 2009-3-31 19:13:52 | 显示全部楼层
坦白说一句,这只是一个纯粹的Bug,除了复制数据,没看出有任何用途.连string与integer之间相互转换都不行...复制数据也用不着用Union Bug来实现吧..
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 21:21 , Processed in 0.078084 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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