Есть XS процедура, которая возвращает ссылку на массив SV*.
В процедуре создается новый массив
AV* array = (AV*)sv_2mortal((SV*)newAV());
AV* array2 = newAV();
av_push(newArray, newSVpv("value2", 0));
av_push(newArray, (SV*)newArray2);
return newRV((SV*)newArray);
При этом в перле выводится следующее:
[
'value',
undef
];
cобсвтенно вопрос - почему? Как работает XS сборщик мусора? Понятно, что REFCNT
для newArray2 = 1, Но он также равен 1 и для newSVpv(...)
В чем разница между этими двумя указателями?
Понятно, что можно это исправить , если второй массив тоже сделать с mortal. Но
не понятно, почему, так происходит.
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org