… | |
… | |
47 | cv = sv_2cv (sv, &st, &gvp, 0); |
47 | cv = sv_2cv (sv, &st, &gvp, 0); |
48 | |
48 | |
49 | if (!cv) |
49 | if (!cv) |
50 | croak ("%s: callback must be a CODE reference or another callable object", SvPV_nolen (sv)); |
50 | croak ("%s: callback must be a CODE reference or another callable object", SvPV_nolen (sv)); |
51 | |
51 | |
52 | if (!PL_firstgv) PL_firstgv = gv_fetchpvs ("a", GV_ADD | GV_NOTQUAL, SVt_PV); |
52 | SAVESPTR (PL_firstgv ); PL_firstgv = gv_fetchpv ("a", GV_ADD | GV_NOTQUAL, SVt_PV); SAVESPTR (GvSV (PL_firstgv )); |
53 | if (!PL_secondgv) PL_secondgv = gv_fetchpvs ("b", GV_ADD | GV_NOTQUAL, SVt_PV); |
53 | SAVESPTR (PL_secondgv); PL_secondgv = gv_fetchpv ("b", GV_ADD | GV_NOTQUAL, SVt_PV); SAVESPTR (GvSV (PL_secondgv)); |
54 | |
|
|
55 | SAVESPTR (GvSV (PL_firstgv)); |
|
|
56 | SAVESPTR (GvSV (PL_secondgv)); |
|
|
57 | |
54 | |
58 | return cv; |
55 | return cv; |
59 | } |
56 | } |
60 | |
57 | |
61 | /*****************************************************************************/ |
58 | /*****************************************************************************/ |
… | |
… | |
125 | static int |
122 | static int |
126 | cmp_custom (SV *a, SV *b, void *cmp_data) |
123 | cmp_custom (SV *a, SV *b, void *cmp_data) |
127 | { |
124 | { |
128 | dCMP_CALL (cmp_data); |
125 | dCMP_CALL (cmp_data); |
129 | |
126 | |
130 | GvSV (PL_firstgv) = a; |
127 | GvSV (PL_firstgv ) = a; |
131 | GvSV (PL_secondgv) = b; |
128 | GvSV (PL_secondgv) = b; |
132 | |
129 | |
133 | MULTICALL; |
130 | MULTICALL; |
134 | |
131 | |
135 | if (SvTRUE (ERRSV)) |
132 | if (SvTRUE (ERRSV)) |