… | |
… | |
37 | av_push (av, newSVpv (text, 0)); \ |
37 | av_push (av, newSVpv (text, 0)); \ |
38 | av_push (about, newRV_noinc ((SV *)av)); \ |
38 | av_push (about, newRV_noinc ((SV *)av)); \ |
39 | } while (0) |
39 | } while (0) |
40 | |
40 | |
41 | #define res_gv(sigil) \ |
41 | #define res_gv(sigil) \ |
42 | res_text (form ("in the global %c%s::%.*s", sigil, \ |
42 | res_text (form ("the global %c%s::%.*s", sigil, \ |
43 | HvNAME (GvSTASH (sv)), \ |
43 | HvNAME (GvSTASH (sv)), \ |
44 | GvNAME_HEK (sv) ? GvNAMELEN (sv) : 11, \ |
44 | GvNAME_HEK (sv) ? GvNAMELEN (sv) : 11, \ |
45 | GvNAME_HEK (sv) ? GvNAME (sv) : "<anonymous>")) |
45 | GvNAME_HEK (sv) ? GvNAME (sv) : "<anonymous>")) |
46 | |
46 | |
47 | MODULE = Devel::FindRef PACKAGE = Devel::FindRef |
47 | MODULE = Devel::FindRef PACKAGE = Devel::FindRef |
… | |
… | |
132 | { |
132 | { |
133 | case SVt_PVAV: |
133 | case SVt_PVAV: |
134 | if (AvREAL (sv)) |
134 | if (AvREAL (sv)) |
135 | for (i = AvFILLp (sv) + 1; i--; ) |
135 | for (i = AvFILLp (sv) + 1; i--; ) |
136 | if (AvARRAY (sv)[i] == targ) |
136 | if (AvARRAY (sv)[i] == targ) |
137 | res_pair (form ("in array element %d of", i)); |
137 | res_pair (form ("the array element %d of", i)); |
138 | |
138 | |
139 | break; |
139 | break; |
140 | |
140 | |
141 | case SVt_PVHV: |
141 | case SVt_PVHV: |
142 | if (hv_iterinit ((HV *)sv)) |
142 | if (hv_iterinit ((HV *)sv)) |
143 | { |
143 | { |
144 | HE *he; |
144 | HE *he; |
145 | |
145 | |
146 | while ((he = hv_iternext ((HV *)sv))) |
146 | while ((he = hv_iternext ((HV *)sv))) |
147 | if (HeVAL (he) == targ) |
147 | if (HeVAL (he) == targ) |
148 | res_pair (form ("in the member '%.*s' of", HeKLEN (he), HeKEY (he))); |
148 | res_pair (form ("the hash member '%.*s' of", HeKLEN (he), HeKEY (he))); |
149 | } |
149 | } |
150 | |
150 | |
151 | break; |
151 | break; |
152 | |
152 | |
153 | case SVt_PVCV: |
153 | case SVt_PVCV: |
… | |
… | |
226 | { |
226 | { |
227 | MAGIC *mg = mg_find (sv, PERL_MAGIC_defelem); |
227 | MAGIC *mg = mg_find (sv, PERL_MAGIC_defelem); |
228 | |
228 | |
229 | if (mg && mg->mg_obj) |
229 | if (mg && mg->mg_obj) |
230 | res_pair (form ("the target for the lvalue hash element '%.*s',", |
230 | res_pair (form ("the target for the lvalue hash element '%.*s',", |
231 | SvCUR (mg->mg_obj), SvPV_nolen (mg->mg_obj))); |
231 | (int)SvCUR (mg->mg_obj), SvPV_nolen (mg->mg_obj))); |
232 | else |
232 | else |
233 | res_pair (form ("the target for the lvalue array element #%d,", LvTARGOFF (sv))); |
233 | res_pair (form ("the target for the lvalue array element #%d,", LvTARGOFF (sv))); |
234 | } |
234 | } |
235 | else |
235 | else |
236 | res_pair (form ("an lvalue reference target (type '%c', ofs %d, len %d),", |
236 | res_pair (form ("an lvalue reference target (type '%c', ofs %d, len %d),", |