注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

麦斯·渐行渐远

人无远虑,必有近忧

 
 
 

日志

 
 

Flash Player 10.1的一个BUG  

2010-06-11 16:33:19|  分类: 工作 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
FlashPlayer 10.1.53.64存在一个BUG。如果在迭代Dictionary的同时在另外一个迭代中删除Dictionary的成员会出现错误。而在FlashPlayer 10.0中这个BUG不存在。
    var d:Dictionary = new Dictionary();
    d.a = 1;
    d.b = 2;
    for (var k1:* in d) {
        trace("OUTER:", k1);
        for (var k2:* in d) {
            if (k2 === k1) {
                trace("[X]", k2);
                delete d[k2];
            }
        }
    }
在FlashPlayer 10.0中,输出的结果应该是:
    OUTER: b
    [X] b
    OUTER: a
    [X] a
在FlashPlayer 10.1中,输出的结果则是(外层循环提早退出了):
    OUTER: a 
    [X] a
由于adobe的官方文档并没有对Dictionary在此种情况下的行为作出定义,所以严格意义上来说不能算是行为错误。只能说是行为不一致。

不过就这么一个不一致可能导致整个应用运行不正常。之前梦幻庄园在FP10.1下的行为错误,就是因为一个核心组件进行了类似的调用,而导致整个应用出现一些莫名其妙的错误。

现在暂时没有找到能够解决的办法,这个BUG已经提交到adobe了,BUG编号是FP-4711。看看adobe啥时候能够修复这个错误了。

updated 20100617: bug所属的Project在Adobe的内部审阅过以后从Flash Player更改到了ActionScript Language,BUG编号被更改为了ASL-89
  评论这张
 
阅读(373)| 评论(2)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017