dSP;
symbols = mop_get_all_package_symbols(stash, TYPE_FILTER_CODE);
-
+ sv_2mortal((SV*)symbols);
(void)hv_iterinit(symbols);
while ( (coderef = hv_iternextsv(symbols, &method_name, &method_name_len)) ) {
CV *cv = (CV *)SvRV(coderef);
UV current;
SV *cache_flag;
SV *map_ref;
- INIT:
+ PPCODE:
if (!stash) {
- XSRETURN_EMPTY;
+ mXPUSHs(newRV_noinc((SV *)newHV()));
+ return;
}
+
current = mop_check_package_cache_flag(aTHX_ stash);
cache_flag = HeVAL( hv_fetch_ent(obj, KEY_FOR(package_cache_flag), TRUE, HASH_FOR(package_cache_flag)));
map_ref = HeVAL( hv_fetch_ent(obj, KEY_FOR(methods), TRUE, HASH_FOR(methods)));
- PPCODE:
- /* in $self->{methods} does not yet exist (or got deleted) */
+
+ /* $self->{methods} does not yet exist (or got deleted) */
if ( !SvROK(map_ref) || SvTYPE(SvRV(map_ref)) != SVt_PVHV ) {
SV *new_map_ref = newRV_noinc((SV *)newHV());
sv_2mortal(new_map_ref);