This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Reinstate part of #28744 that was accidentally reverted in #30454
[perl5.git] / ext / Math / BigInt / FastCalc / FastCalc.xs
index f990171..3e53876 100644 (file)
@@ -230,51 +230,44 @@ _num(class,x)
 
 ##############################################################################
 
-void
-_zero(class)
-  INIT:
-    AV* a;
+#define CONSTANT_OBJ(int)              \
+    RETVAL = newAV();                  \
+    sv_2mortal((SV*)RETVAL);           \
+    av_push (RETVAL, newSViv( int ));
 
+AV *
+_zero(class)
   CODE:
-    a = newAV();
-    av_push (a, newSViv( 0 ));         /* zero */
-    ST(0) = newRV_noinc((SV*) a);
+    CONSTANT_OBJ(0)
+  OUTPUT:
+    RETVAL
 
 ##############################################################################
 
-void
+AV *
 _one(class)
-  INIT:
-    AV* a;
-
   CODE:
-    a = newAV();
-    av_push (a, newSViv( 1 ));         /* one */
-    ST(0) = newRV_noinc((SV*) a);
+    CONSTANT_OBJ(1)
+  OUTPUT:
+    RETVAL
 
 ##############################################################################
 
-void
+AV *
 _two(class)
-  INIT:
-    AV* a;
-
   CODE:
-    a = newAV();
-    av_push (a, newSViv( 2 ));         /* two */
-    ST(0) = newRV_noinc((SV*) a);
+    CONSTANT_OBJ(2)
+  OUTPUT:
+    RETVAL
 
 ##############################################################################
 
-void
+AV *
 _ten(class)
-  INIT:
-    AV* a;
-
   CODE:
-    a = newAV();
-    av_push (a, newSViv( 10 ));                /* ten */
-    ST(0) = newRV_noinc((SV*) a);
+    CONSTANT_OBJ(10)
+  OUTPUT:
+    RETVAL
 
 ##############################################################################