|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Modus ponens
|
Ошибка 1009, но объект существует...
Я в расстеряности... строчкой выше объект существует, а строчкой ниже - NPE. Я уже все возможные варианты перебрал, какие мог придумать. Дисассемблил, не видно там ничего такого... вобщем мистика какая-то, может у кого-нибудь будут идеи?
Функция в которой случается ошибка: public function read(from:AS3Sinks, flags:Vector.<Function>):Boolean { var word:String; var subseq:String = from.source.substr(from.column); word = subseq.match(from.settings.alphaNumRegExp)[0]; trace(flags[2], flags[2].apply, flags[2].length, flags[2](false)); var foo:Function = flags[2]; trace(foo); // function Function() {} // flags[0](false); // flags[1](false); // flags[2](false); foo(false); // NPE for (var i:int; i < word.length; i++) { from.advanceColumn(word.charAt(i)); } if (from.onDefault) from.appendCollectedText(from.onDefault(word)); return from.column < from.source.length; } // Функция, которую она вызывает: flags[2] private function collectWords(value:Boolean):void { this._collectWords = value; }
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 18.04.2011 в 23:06. |
|
|||||
Регистрация: Apr 2011
Сообщений: 20
|
а чему равен flags[2]? ясно
Я попробывал со статикой, всё гут. думаю... и с динамиком тоже... var flags:Vector.<Function> = new Vector.<Function>(); flags.push( test ); flags.push( test ); flags.push( test ); var foo:Function = flags[2]; trace( flags[2] ); trace( foo ); foo( true ); function Function() {} function Function() {} activate test: true Последний раз редактировалось ZZZubec; 18.04.2011 в 23:24. |
|
|||||
Modus ponens
|
Фишка в том, что функция вызывается несколько раз, и отрабатывает пару раз как нужно, а потом вдруг "забывает". Функция вызывается таким образом:
while (nextSink = this._stack.next()) { //----------------------------------------\/ Вот это она. if (nextSink.isSinkStart(this) && nextSink.read(this, flags)) this._stack.reset(); }
__________________
Hell is the possibility of sanity |
|
|||||
Регистрация: Apr 2011
Сообщений: 20
|
а что если нет доступа не к функции, а к переменной this._collectWords
|
|
|||||
Modus ponens
|
как это нет, а как же он тогда скомпилировался? И не доходит он туда вообще, он умирает именно на строчке с вызовом функции, но не понятно, что он ищет (или где).
EDIT: Дальше больше... получил NPE в вот такой вот строчке: super._collected объявлен так:
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 19.04.2011 в 02:03. |
|
|||||
Ничего тут к сожалению не понял, но вспомнил баг, который недавно сам словил.
В одном месте (уже переписанном раза три) на простой строчке, где делался splice из вектора (по вполне существующему индексу) вываливался OutOfMemoryError. Причем, кажется, даже не на всех браузерах + в дебаге. Может дело в версии плеера? P.S. Последнего сообщения не видел. Вот примерно так же.
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ" Мои ачивки: художник-паразит. Последний раз редактировалось ChuwY; 19.04.2011 в 02:33. |
|
|||||
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
Цитата:
package { public class MainClass { protected const _collected:Vector.<String> = new <String>[]; public function MainClass() { _collected.push("test"); } } } package { public class NewClass extends MainClass { public function NewClass() { trace("NewClass::NewClass super._collected.length",super._collected.length); super._collected.splice(0, super._collected.length); trace("NewClass::NewClass super._collected.length after splice",super._collected.length); } } } |
|
|||||
Modus ponens
|
Так фишка-то в чем - и не должно быть ошибки. Ошибка только проявляется в конкретном проекте при определенном стечении обстоятельств, а вот какие именно обстоятельства важны для ее проявления - не понятно.
__________________
Hell is the possibility of sanity |
|
|||||
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
как я понимаю, тут вариантов-то не много
либо сам вектор стал нуллом, либо параметры splice ссылаются на несуществующий индекс, т.е., нуллом является элемент вектора ну, если конечно исключить баг плеера при использовании splice я бы выставил отладочную печать в этом месте и банально ждал сбоя |
|
|||||
Modus ponens
|
Так посмотрите внимательно на скриншот (кстати, вот еще один). Отладчик видит вектор, и ошибка возникает не при попытке вызвать splice - еще до того, когда обращаемся к length. Т.е. это бага либо плеера либо компилятора, а вот кого именно и что именно происходит - не понятно.
__________________
Hell is the possibility of sanity |
Часовой пояс GMT +4, время: 18:41. |
|
« Предыдущая тема | Следующая тема » |
|
|