チェンジセット 3077

差分発生行の前後
無視リスト:
コミット日時:
2009/09/09 02:49:03 (4 年前)
コミッタ:
yossy
ログメッセージ:

BetweenAS3: Fix: Sometimes ReferenceError? has occurred in EnterFrameTicker?. (fixed #108)

ファイル:

凡例:

変更無し
追加
削除
更新
コピー
移動
  • as3/BetweenAS3/trunk/CHANGES

    r3021 r3077  
    22======================================== 
    33 
    4 Alpha r2505 -> HEAD 
     4Alpha r3022 -> HEAD 
     5-------------------- 
     6 
     7 * [r3021] Fix: Sometimes ReferenceError has occurred in EnterFrameTicker. (#108) 
     8 
     9Alpha r2505 -> Alpha r3022 
    510-------------------- 
    611 
  • as3/BetweenAS3/trunk/CHANGES.ja

    r3021 r3077  
    22======================================== 
    33 
    4 Alpha r2505 -> HEAD 
     4Alpha r3022 -> HEAD 
     5-------------------- 
     6 
     7 * [r3021] 修正: 特定の条件下で EnterFrameTicker 内で ReferenceError が発生する (#108) 
     8 
     9Alpha r2505 -> Alpha r3022 
    510-------------------- 
    611 
  • as3/BetweenAS3/trunk/src/fp10/org/libspark/betweenas3/tickers/EnterFrameTicker.as

    r3019 r3077  
    165165                                                listener.nextListener.prevListener = listener.prevListener; 
    166166                                        } 
    167                                         ll = listener.prevListener; 
    168                                         listener.nextListener = null; 
    169                                         listener.prevListener = null; 
    170                                         listener = ll; 
    171                                         --_numListeners; 
    172                                 } 
    173                                 if ((listener = listener.nextListener).tick(t)) { 
    174                                         if (listener.prevListener != null) { 
    175                                                 listener.prevListener.nextListener = listener.nextListener; 
    176                                         } 
    177                                         if (listener.nextListener != null) { 
    178                                                 listener.nextListener.prevListener = listener.prevListener; 
    179                                         } 
    180                                         ll = listener.prevListener; 
    181                                         listener.nextListener = null; 
    182                                         listener.prevListener = null; 
    183                                         listener = ll; 
    184                                         --_numListeners; 
    185                                 } 
    186                                 if ((listener = listener.nextListener).tick(t)) { 
    187                                         if (listener.prevListener != null) { 
    188                                                 listener.prevListener.nextListener = listener.nextListener; 
    189                                         } 
    190                                         if (listener.nextListener != null) { 
    191                                                 listener.nextListener.prevListener = listener.prevListener; 
    192                                         } 
    193                                         ll = listener.prevListener; 
    194                                         listener.nextListener = null; 
    195                                         listener.prevListener = null; 
    196                                         listener = ll; 
    197                                         --_numListeners; 
    198                                 } 
    199                                 if ((listener = listener.nextListener).tick(t)) { 
    200                                         if (listener.prevListener != null) { 
    201                                                 listener.prevListener.nextListener = listener.nextListener; 
    202                                         } 
    203                                         if (listener.nextListener != null) { 
    204                                                 listener.nextListener.prevListener = listener.prevListener; 
    205                                         } 
    206                                         ll = listener.prevListener; 
    207                                         listener.nextListener = null; 
    208                                         listener.prevListener = null; 
    209                                         listener = ll; 
    210                                         --_numListeners; 
    211                                 } 
    212                                 if ((listener = listener.nextListener).tick(t)) { 
    213                                         if (listener.prevListener != null) { 
    214                                                 listener.prevListener.nextListener = listener.nextListener; 
    215                                         } 
    216                                         if (listener.nextListener != null) { 
    217                                                 listener.nextListener.prevListener = listener.prevListener; 
    218                                         } 
    219                                         ll = listener.prevListener; 
    220                                         listener.nextListener = null; 
    221                                         listener.prevListener = null; 
    222                                         listener = ll; 
    223                                         --_numListeners; 
    224                                 } 
    225                                 if ((listener = listener.nextListener).tick(t)) { 
    226                                         if (listener.prevListener != null) { 
    227                                                 listener.prevListener.nextListener = listener.nextListener; 
    228                                         } 
    229                                         if (listener.nextListener != null) { 
    230                                                 listener.nextListener.prevListener = listener.prevListener; 
    231                                         } 
    232                                         ll = listener.prevListener; 
    233                                         listener.nextListener = null; 
    234                                         listener.prevListener = null; 
    235                                         listener = ll; 
    236                                         --_numListeners; 
    237                                 } 
    238                                 if ((listener = listener.nextListener).tick(t)) { 
    239                                         if (listener.prevListener != null) { 
    240                                                 listener.prevListener.nextListener = listener.nextListener; 
    241                                         } 
    242                                         if (listener.nextListener != null) { 
    243                                                 listener.nextListener.prevListener = listener.prevListener; 
    244                                         } 
    245                                         ll = listener.prevListener; 
    246                                         listener.nextListener = null; 
    247                                         listener.prevListener = null; 
    248                                         listener = ll; 
    249                                         --_numListeners; 
    250                                 } 
    251                                 if ((listener = listener.nextListener).tick(t)) { 
    252                                         if (listener.prevListener != null) { 
    253                                                 listener.prevListener.nextListener = listener.nextListener; 
    254                                         } 
    255                                         if (listener.nextListener != null) { 
    256                                                 listener.nextListener.prevListener = listener.prevListener; 
     167                                        if (listener == _first) { 
     168                                                _first = listener.nextListener; 
     169                                        } 
     170                                        ll = listener.prevListener; 
     171                                        listener.nextListener = null; 
     172                                        listener.prevListener = null; 
     173                                        listener = ll; 
     174                                        --_numListeners; 
     175                                } 
     176                                if ((listener = listener.nextListener).tick(t)) { 
     177                                        if (listener.prevListener != null) { 
     178                                                listener.prevListener.nextListener = listener.nextListener; 
     179                                        } 
     180                                        if (listener.nextListener != null) { 
     181                                                listener.nextListener.prevListener = listener.prevListener; 
     182                                        } 
     183                                        if (listener == _first) { 
     184                                                _first = listener.nextListener; 
     185                                        } 
     186                                        ll = listener.prevListener; 
     187                                        listener.nextListener = null; 
     188                                        listener.prevListener = null; 
     189                                        listener = ll; 
     190                                        --_numListeners; 
     191                                } 
     192                                if ((listener = listener.nextListener).tick(t)) { 
     193                                        if (listener.prevListener != null) { 
     194                                                listener.prevListener.nextListener = listener.nextListener; 
     195                                        } 
     196                                        if (listener.nextListener != null) { 
     197                                                listener.nextListener.prevListener = listener.prevListener; 
     198                                        } 
     199                                        if (listener == _first) { 
     200                                                _first = listener.nextListener; 
     201                                        } 
     202                                        ll = listener.prevListener; 
     203                                        listener.nextListener = null; 
     204                                        listener.prevListener = null; 
     205                                        listener = ll; 
     206                                        --_numListeners; 
     207                                } 
     208                                if ((listener = listener.nextListener).tick(t)) { 
     209                                        if (listener.prevListener != null) { 
     210                                                listener.prevListener.nextListener = listener.nextListener; 
     211                                        } 
     212                                        if (listener.nextListener != null) { 
     213                                                listener.nextListener.prevListener = listener.prevListener; 
     214                                        } 
     215                                        if (listener == _first) { 
     216                                                _first = listener.nextListener; 
     217                                        } 
     218                                        ll = listener.prevListener; 
     219                                        listener.nextListener = null; 
     220                                        listener.prevListener = null; 
     221                                        listener = ll; 
     222                                        --_numListeners; 
     223                                } 
     224                                if ((listener = listener.nextListener).tick(t)) { 
     225                                        if (listener.prevListener != null) { 
     226                                                listener.prevListener.nextListener = listener.nextListener; 
     227                                        } 
     228                                        if (listener.nextListener != null) { 
     229                                                listener.nextListener.prevListener = listener.prevListener; 
     230                                        } 
     231                                        if (listener == _first) { 
     232                                                _first = listener.nextListener; 
     233                                        } 
     234                                        ll = listener.prevListener; 
     235                                        listener.nextListener = null; 
     236                                        listener.prevListener = null; 
     237                                        listener = ll; 
     238                                        --_numListeners; 
     239                                } 
     240                                if ((listener = listener.nextListener).tick(t)) { 
     241                                        if (listener.prevListener != null) { 
     242                                                listener.prevListener.nextListener = listener.nextListener; 
     243                                        } 
     244                                        if (listener.nextListener != null) { 
     245                                                listener.nextListener.prevListener = listener.prevListener; 
     246                                        } 
     247                                        if (listener == _first) { 
     248                                                _first = listener.nextListener; 
     249                                        } 
     250                                        ll = listener.prevListener; 
     251                                        listener.nextListener = null; 
     252                                        listener.prevListener = null; 
     253                                        listener = ll; 
     254                                        --_numListeners; 
     255                                } 
     256                                if ((listener = listener.nextListener).tick(t)) { 
     257                                        if (listener.prevListener != null) { 
     258                                                listener.prevListener.nextListener = listener.nextListener; 
     259                                        } 
     260                                        if (listener.nextListener != null) { 
     261                                                listener.nextListener.prevListener = listener.prevListener; 
     262                                        } 
     263                                        if (listener == _first) { 
     264                                                _first = listener.nextListener; 
     265                                        } 
     266                                        ll = listener.prevListener; 
     267                                        listener.nextListener = null; 
     268                                        listener.prevListener = null; 
     269                                        listener = ll; 
     270                                        --_numListeners; 
     271                                } 
     272                                if ((listener = listener.nextListener).tick(t)) { 
     273                                        if (listener.prevListener != null) { 
     274                                                listener.prevListener.nextListener = listener.nextListener; 
     275                                        } 
     276                                        if (listener.nextListener != null) { 
     277                                                listener.nextListener.prevListener = listener.prevListener; 
     278                                        } 
     279                                        if (listener == _first) { 
     280                                                _first = listener.nextListener; 
    257281                                        } 
    258282                                        ll = listener.prevListener; 
  • as3/BetweenAS3/trunk/tests/fp10/org/libspark/betweenas3/tickers/EnterFrameTickerTest.as

    r3019 r3077  
    161161                        assertEquals(1, l3.c); 
    162162                } 
     163                 
     164                // http://www.libspark.org/ticket/108 
     165                test function issue108():void 
     166                { 
     167                        var ticker:EnterFrameTicker = new EnterFrameTicker(); 
     168                         
     169                        var l8:MockTickerListener = new MockTickerListener(2); 
     170                        var l7:MockTickerListener = new MockTickerListener(2); 
     171                        var l6:MockTickerListener = new MockTickerListener(2); 
     172                        var l5:MockTickerListener = new MockTickerListener(2); 
     173                        var l4:MockTickerListener = new MockTickerListener(2); 
     174                        var l3:MockTickerListener = new MockTickerListener(2); 
     175                        var l2_2:MockTickerListener = new MockTickerListener(2); 
     176                        var l2_1:AddingListenerTickerListener = new AddingListenerTickerListener(1, ticker, l2_2); 
     177                        var l1:MockTickerListener = new MockTickerListener(1); 
     178                         
     179                        ticker.addTickerListener(l8); 
     180                        ticker.addTickerListener(l7); 
     181                        ticker.addTickerListener(l6); 
     182                        ticker.addTickerListener(l5); 
     183                        ticker.addTickerListener(l4); 
     184                        ticker.addTickerListener(l3); 
     185                        ticker.addTickerListener(l2_1); 
     186                        ticker.addTickerListener(l1); 
     187                         
     188                        ticker.update(null); 
     189                        ticker.update(null); 
     190                        ticker.update(null); 
     191                        ticker.update(null); 
     192                         
     193                        assertEquals(1, l1.c); 
     194                        assertEquals(1, l2_1.c); 
     195                        assertEquals(2, l2_2.c); 
     196                        assertEquals(2, l3.c); 
     197                        assertEquals(2, l4.c); 
     198                        assertEquals(2, l5.c); 
     199                        assertEquals(2, l6.c); 
     200                        assertEquals(2, l7.c); 
     201                        assertEquals(2, l8.c); 
     202                } 
    163203        } 
    164204}