Занимаясь переработкой ppRuby, напоролся на очень интересную особенность, которая стоила мне часов восьми матерной отладки...
Вкратце: в одном из определяемых методов заворачивал я объекты (дочерние компоненты) в объекты Ruby, складывал в массив, затем — преобразовывал массив в рубишный посредством “rb_ary_new4()
”. При дальнейшем использовании этого массива получал AV. При этом формирование хэша, перебор этих дочерних компонентов, и т.д., и т.п. — всё проходило прекрасно. А с массивом — жопа.
В итоге выяснилось следующее: пока добавлялись последние элементы, по первым успевал пройтись сборщик мусора — у движка-то на них ссылок не было... Решение: создавать пустой массив и добавлять по одному. Работает.
Комментариев нет:
Отправить комментарий