switch done_declare from call_argv to call_pv
Matt S Trout [Sat, 18 Oct 2008 09:06:13 +0000 (09:06 +0000)]
Changes
Declare.xs

diff --git a/Changes b/Changes
index 6e1e539..8dc67d8 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,5 +1,7 @@
 Changes for Devel-Declare
 
+  - switch done_declare call from call_argv to call_pv
+
 0.002001
   - clean up checks for whether we're lexing and whether lex_stuff exists
     to handle the PL_parser factor-out in 5.10
index 7f383a8..db84e25 100644 (file)
@@ -194,12 +194,10 @@ STATIC OP *(*dd_old_ck_rv2cv)(pTHX_ OP *op);
 STATIC OP *dd_ck_rv2cv(pTHX_ OP *o) {
   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;
     if (dd_debug) {
       printf("Deconstructing declare\n");
       printf("PL_bufptr: %s\n", PL_bufptr);
@@ -207,7 +205,19 @@ STATIC OP *dd_ck_rv2cv(pTHX_ OP *o) {
       printf("linestr: %s\n", SvPVX(PL_linestr));
       printf("linestr len: %i\n", PL_bufend - SvPVX(PL_linestr));
     }
-    call_argv("Devel::Declare::done_declare", G_VOID|G_DISCARD, cb_args);
+
+    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);