]> git.vpit.fr Git - perl/modules/Variable-Magic.git/commitdiff
Replace XPUSHs by EXTEND/PUSHs
authorVincent Pit <vince@profvince.com>
Wed, 27 Aug 2008 19:17:17 +0000 (21:17 +0200)
committerVincent Pit <vince@profvince.com>
Wed, 27 Aug 2008 19:17:17 +0000 (21:17 +0200)
Magic.xs

index ba230455e8bfff3bf05a590a8ea017acf39bdf23..bfc75c9400048207f4e9ff5b59c980a14cc91b00 100644 (file)
--- a/Magic.xs
+++ b/Magic.xs
@@ -181,6 +181,7 @@ typedef struct {
 STATIC SV *vmg_data_new(pTHX_ SV *ctor, SV *sv, AV *args) {
 #define vmg_data_new(C, S, A) vmg_data_new(aTHX_ (C), (S), (A))
  SV *nsv;
+ I32 i, alen = (args == NULL) ? 0 : av_len(args);
 
  dSP;
  int count;
@@ -189,11 +190,10 @@ STATIC SV *vmg_data_new(pTHX_ SV *ctor, SV *sv, AV *args) {
  SAVETMPS;
 
  PUSHMARK(SP);
- XPUSHs(sv_2mortal(newRV_inc(sv)));
- if (args != NULL) {
-  I32 i, alen = av_len(args);
-  for (i = 0; i < alen; ++i) { XPUSHs(*av_fetch(args, i, 0)); }
- }
+ EXTEND(SP, alen + 1);
+ PUSHs(sv_2mortal(newRV_inc(sv)));
+ for (i = 0; i < alen; ++i)
+  PUSHs(*av_fetch(args, i, 0));
  PUTBACK;
 
  count = call_sv(ctor, G_SCALAR);