Retract the #10417 mg.c and embed.pl parts because of
Jarkko Hietaniemi [Thu, 21 Jun 2001 20:01:14 +0000 (20:01 +0000)]
strange SEGVs in 64bit x86 FreeBSD observed by
Nicholas Clark.

p4raw-id: //depot/perl@10798

embed.pl
mg.c
perlapi.c
pod/perlintern.pod
proto.h

index 7b97a01..4a9176f 100755 (executable)
--- a/embed.pl
+++ b/embed.pl
@@ -1752,7 +1752,7 @@ Apd       |int    |mg_get         |SV* sv
 Apd    |U32    |mg_length      |SV* sv
 Apd    |void   |mg_magical     |SV* sv
 Apd    |int    |mg_set         |SV* sv
-Ap     |IV     |mg_size        |SV* sv
+Ap     |I32    |mg_size        |SV* sv
 Ap     |void   |mini_mktime    |struct tm *pm
 p      |OP*    |mod            |OP* o|I32 type
 p      |int    |mode_from_discipline|SV* discp
@@ -2285,7 +2285,7 @@ s |void   |hv_magic_check |HV *hv|bool *needs_copy|bool *needs_store
 #endif
 
 #if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT)
-s      |void   |save_magic     |IV mgs_ix|SV *sv
+s      |void   |save_magic     |I32 mgs_ix|SV *sv
 s      |int    |magic_methpack |SV *sv|MAGIC *mg|char *meth
 s      |int    |magic_methcall |SV *sv|MAGIC *mg|char *meth|I32 f \
                                |int n|SV *val
diff --git a/mg.c b/mg.c
index 0cf8228..65b2f96 100644 (file)
--- a/mg.c
+++ b/mg.c
@@ -40,7 +40,7 @@ struct magic_state {
 /* MGS is typedef'ed to struct magic_state in perl.h */
 
 STATIC void
-S_save_magic(pTHX_ IV mgs_ix, SV *sv)
+S_save_magic(pTHX_ I32 mgs_ix, SV *sv)
 {
     MGS* mgs;
     assert(SvMAGICAL(sv));
@@ -93,7 +93,7 @@ Do magic after a value is retrieved from the SV.  See C<sv_magic>.
 int
 Perl_mg_get(pTHX_ SV *sv)
 {
-    IV mgs_ix;
+    I32 mgs_ix;
     MAGIC* mg;
     MAGIC** mgp;
     int mgp_valid = 0;
@@ -135,7 +135,7 @@ Do magic after a value is assigned to the SV.  See C<sv_magic>.
 int
 Perl_mg_set(pTHX_ SV *sv)
 {
-    IV mgs_ix;
+    I32 mgs_ix;
     MAGIC* mg;
     MAGIC* nextmg;
 
@@ -175,7 +175,7 @@ Perl_mg_length(pTHX_ SV *sv)
     for (mg = SvMAGIC(sv); mg; mg = mg->mg_moremagic) {
        MGVTBL* vtbl = mg->mg_virtual;
        if (vtbl && vtbl->svt_len) {
-            IV mgs_ix;
+            I32 mgs_ix;
 
            mgs_ix = SSNEW(sizeof(MGS));
            save_magic(mgs_ix, sv);
@@ -190,7 +190,7 @@ Perl_mg_length(pTHX_ SV *sv)
     return len;
 }
 
-IV
+I32
 Perl_mg_size(pTHX_ SV *sv)
 {
     MAGIC* mg;
@@ -199,7 +199,7 @@ Perl_mg_size(pTHX_ SV *sv)
     for (mg = SvMAGIC(sv); mg; mg = mg->mg_moremagic) {
        MGVTBL* vtbl = mg->mg_virtual;
        if (vtbl && vtbl->svt_len) {
-            IV mgs_ix;
+            I32 mgs_ix;
 
            mgs_ix = SSNEW(sizeof(MGS));
            save_magic(mgs_ix, sv);
@@ -234,7 +234,7 @@ Clear something magical that the SV represents.  See C<sv_magic>.
 int
 Perl_mg_clear(pTHX_ SV *sv)
 {
-    IV mgs_ix;
+    I32 mgs_ix;
     MAGIC* mg;
 
     mgs_ix = SSNEW(sizeof(MGS));
index fc5ca24..b554ed5 100644 (file)
--- a/perlapi.c
+++ b/perlapi.c
@@ -1610,7 +1610,7 @@ Perl_mg_set(pTHXo_ SV* sv)
 }
 
 #undef  Perl_mg_size
-IV
+I32
 Perl_mg_size(pTHXo_ SV* sv)
 {
     return ((CPerlObj*)pPerl)->Perl_mg_size(sv);
index a0cf47c..6ca016c 100644 (file)
@@ -153,7 +153,7 @@ Found in file sv.c
 
 Decrement the refcnt of each remaining SV, possibly triggering a
 cleanup. This function may have to be called multiple times to free
-SVs which are in complex self-referential heirarchies.
+SVs which are in complex self-referential hierarchies.
 
        I32     sv_clean_all()
 
diff --git a/proto.h b/proto.h
index 0fe6095..411dcb3 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -480,7 +480,7 @@ PERL_CALLCONV int   Perl_mg_get(pTHX_ SV* sv);
 PERL_CALLCONV U32      Perl_mg_length(pTHX_ SV* sv);
 PERL_CALLCONV void     Perl_mg_magical(pTHX_ SV* sv);
 PERL_CALLCONV int      Perl_mg_set(pTHX_ SV* sv);
-PERL_CALLCONV IV       Perl_mg_size(pTHX_ SV* sv);
+PERL_CALLCONV I32      Perl_mg_size(pTHX_ SV* sv);
 PERL_CALLCONV void     Perl_mini_mktime(pTHX_ struct tm *pm);
 PERL_CALLCONV OP*      Perl_mod(pTHX_ OP* o, I32 type);
 PERL_CALLCONV int      Perl_mode_from_discipline(pTHX_ SV* discp);
@@ -1018,7 +1018,7 @@ STATIC void       S_hv_magic_check(pTHX_ HV *hv, bool *needs_copy, bool *needs_store);
 #endif
 
 #if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT)
-STATIC void    S_save_magic(pTHX_ IV mgs_ix, SV *sv);
+STATIC void    S_save_magic(pTHX_ I32 mgs_ix, SV *sv);
 STATIC int     S_magic_methpack(pTHX_ SV *sv, MAGIC *mg, char *meth);
 STATIC int     S_magic_methcall(pTHX_ SV *sv, MAGIC *mg, char *meth, I32 f, int n, SV *val);
 #endif