/* replacement PL_check rv2cv entry */
- STATIC OP *(*dd_old_ck_rv2cv)(pTHX_ OP *op);
-
- STATIC OP *dd_ck_rv2cv(pTHX_ OP *o) {
+ STATIC OP *dd_ck_rv2cv(pTHX_ OP *o, void *user_data) {
OP* kid;
int dd_flags;
- char* cb_args[6];
- o = dd_old_ck_rv2cv(aTHX_ o); /* let the original do its job */
-
if (in_declare) {
- cb_args[0] = NULL;
-#ifdef DD_DEBUG
- printf("Deconstructing declare\n");
- printf("PL_bufptr: %s\n", PL_bufptr);
- printf("bufend at: %i\n", PL_bufend - PL_bufptr);
- printf("linestr: %s\n", SvPVX(PL_linestr));
- printf("linestr len: %i\n", PL_bufend - SvPVX(PL_linestr));
-#endif
- call_argv("Devel::Declare::done_declare", G_VOID|G_DISCARD, cb_args);
-#ifdef DD_DEBUG
- printf("PL_bufptr: %s\n", PL_bufptr);
- printf("bufend at: %i\n", PL_bufend - PL_bufptr);
- printf("linestr: %s\n", SvPVX(PL_linestr));
- printf("linestr len: %i\n", PL_bufend - SvPVX(PL_linestr));
- printf("actual len: %i\n", strlen(PL_bufptr));
-#endif
+ if (dd_debug) {
+ printf("Deconstructing declare\n");
+ printf("PL_bufptr: %s\n", PL_bufptr);
+ printf("bufend at: %i\n", PL_bufend - PL_bufptr);
+ printf("linestr: %s\n", SvPVX(PL_linestr));
+ printf("linestr len: %i\n", PL_bufend - SvPVX(PL_linestr));
+ }
+
+ dSP;
+
+ ENTER;
+ SAVETMPS;
+
+ PUSHMARK(SP);
+
+ call_pv("Devel::Declare::done_declare", G_VOID|G_DISCARD);
+
+ FREETMPS;
+ LEAVE;
+
+ if (dd_debug) {
+ printf("PL_bufptr: %s\n", PL_bufptr);
+ printf("bufend at: %i\n", PL_bufend - PL_bufptr);
+ printf("linestr: %s\n", SvPVX(PL_linestr));
+ printf("linestr len: %i\n", PL_bufend - SvPVX(PL_linestr));
+ printf("actual len: %i\n", strlen(PL_bufptr));
+ }
return o;
}
return count;
}
- STATIC OP *(*dd_old_ck_const)(pTHX_ OP*op);
-
- STATIC OP *dd_ck_const(pTHX_ OP *o) {
+ STATIC OP *dd_ck_const(pTHX_ OP *o, void *user_data) {
int dd_flags;
- char* s;
char* name;
- o = dd_old_ck_const(aTHX_ o); /* let the original do its job */
-
/* if this is set, we just grabbed a delimited string or something,
not a bareword, so NO TOUCHY */