-#define PERL_IN_TOKE_C
#define PERL_CORE
#define PERL_NO_GET_CONTEXT
#include "EXTERN.h"
HV* is_declarator_pack_hash;
SV** is_declarator_flag_ref;
int dd_flags;
- char* cb_args[5];
+ char* cb_args[6];
dSP; /* define stack pointer for later call stuff */
char* retstr;
STRLEN n_a; /* for POPpx */
#endif
cb_args[0] = HvNAME(stash);
cb_args[1] = GvNAME(kGVOP_gv);
- cb_args[2] = found_name;
- cb_args[3] = found_proto;
- cb_args[4] = NULL;
+ cb_args[2] = HvNAME(PL_curstash);
+ cb_args[3] = found_name;
+ cb_args[4] = found_proto;
+ cb_args[5] = NULL;
if (len && found_proto)
in_declare = 2;
retstr = POPpx;
PUTBACK;
if (retstr && strlen(retstr)) {
+ const int old_len = SvCUR(PL_linestr);
#ifdef DD_DEBUG
printf("Got string %s\n", retstr);
#endif
- SvGROW(PL_linestr, strlen(retstr));
+ SvGROW(PL_linestr, (STRLEN)(old_len + strlen(retstr)));
memmove(s+strlen(retstr), s, (PL_bufend - s)+1);
memmove(s, retstr, strlen(retstr));
+ SvCUR_set(PL_linestr, old_len + strlen(retstr));
PL_bufend += strlen(retstr);
#ifdef DD_DEBUG
printf("cur buf: %s\n", s);
SV** to_inject_ref;
int i, pad_inject_list_last;
- o = dd_old_ck_lineseq(o);
+ o = dd_old_ck_lineseq(aTHX_ o);
pad_inject_list = get_av("Devel::Declare::next_pad_inject", FALSE);
if (!pad_inject_list)