Change 32760 by [EMAIL PROTECTED] on 2007/12/29 12:28:14
Change Perl_av_iter_p() to return IV* rather than I32* (which means
having to allocate memory where sizeof(IV) > sizeof(I32)).
Affected files ...
... //depot/perl/av.c#124 edit
... //depot/perl/embed.fnc#544 edit
... //depot/perl/embed.h#731 edit
... //depot/perl/pp.c#609 edit
... //depot/perl/proto.h#880 edit
Differences ...
==== //depot/perl/av.c#124 (text) ====
Index: perl/av.c
--- perl/av.c#123~32680~ 2007-12-20 13:15:57.000000000 -0800
+++ perl/av.c 2007-12-29 04:28:14.000000000 -0800
@@ -970,11 +970,18 @@
return &(mg->mg_obj);
}
-/* This will change to returning IV ** at some point soon */
-I32 *
+IV *
Perl_av_iter_p(pTHX_ AV *av) {
MAGIC *const mg = get_aux_mg(av);
+#if IVSIZE == I32SIZE
return &(mg->mg_len);
+#else
+ if (!mg->mg_ptr) {
+ mg->mg_len = IVSIZE;
+ Newxz(mg->mg_ptr, 1, IV);
+ }
+ return (IV *)mg->mg_ptr;
+#endif
}
/*
==== //depot/perl/embed.fnc#544 (text) ====
Index: perl/embed.fnc
--- perl/embed.fnc#543~32684~ 2007-12-20 23:42:56.000000000 -0800
+++ perl/embed.fnc 2007-12-29 04:28:14.000000000 -0800
@@ -115,7 +115,7 @@
ApdoxM |SV** |av_create_and_unshift_one|NN AV **const avp|NN SV *const val
Apd |void |av_unshift |NN AV* ar|I32 num
Apo |SV** |av_arylen_p |NN AV* av
-AMpo |I32* |av_iter_p |NN AV* av
+Apo |IV* |av_iter_p |NN AV* av
#if defined(PERL_IN_AV_C) || defined(PERL_DECL_PROT)
s |MAGIC* |get_aux_mg |NN AV *av
#endif
==== //depot/perl/pp.c#609 (text) ====
Index: perl/pp.c
--- perl/pp.c#608~32737~ 2007-12-26 10:12:32.000000000 -0800
+++ perl/pp.c 2007-12-29 04:28:14.000000000 -0800
@@ -3929,7 +3929,7 @@
dSP;
AV *array = (AV*)POPs;
const I32 gimme = GIMME_V;
- I32 *iterp = Perl_av_iter_p(aTHX_ array);
+ IV *iterp = Perl_av_iter_p(aTHX_ array);
const IV current = (*iterp)++;
if (current > av_len(array)) {
==== //depot/perl/proto.h#880 (text+w) ====
Index: perl/proto.h
--- perl/proto.h#879~32684~ 2007-12-20 23:42:56.000000000 -0800
+++ perl/proto.h 2007-12-29 04:28:14.000000000 -0800
@@ -189,7 +189,7 @@
PERL_CALLCONV SV** Perl_av_arylen_p(pTHX_ AV* av)
__attribute__nonnull__(pTHX_1);
-PERL_CALLCONV I32* Perl_av_iter_p(pTHX_ AV* av)
+PERL_CALLCONV IV* Perl_av_iter_p(pTHX_ AV* av)
__attribute__nonnull__(pTHX_1);
#if defined(PERL_IN_AV_C) || defined(PERL_DECL_PROT)
End of Patch.