Ultrix mmap tidbit.
[p5sagit/p5-mst-13.2.git] / hv.c
diff --git a/hv.c b/hv.c
index ddd989f..a8d9fbc 100644 (file)
--- a/hv.c
+++ b/hv.c
@@ -832,19 +832,18 @@ HV *
 newHVhv(HV *ohv)
 {
     register HV *hv;
-    register XPVHV* xhv;
     STRLEN hv_max = ohv ? HvMAX(ohv) : 0;
     STRLEN hv_fill = ohv ? HvFILL(ohv) : 0;
 
     hv = newHV();
     while (hv_max && hv_max + 1 >= hv_fill * 2)
        hv_max = hv_max / 2;    /* Is always 2^n-1 */
-    ((XPVHV*)SvANY(hv))->xhv_max = hv_max;
+    HvMAX(hv) = hv_max;
     if (!hv_fill)
        return hv;
 
 #if 0
-    if (!SvRMAGICAL(ohv) || !mg_find((SV*)ohv,'P')) {
+    if (! SvTIED_mg((SV*)ohv, 'P')) {
        /* Quick way ???*/
     } 
     else 
@@ -855,7 +854,7 @@ newHVhv(HV *ohv)
        HE *hv_eiter = HvEITER(ohv);    /* current entry of iterator */
        
        /* Slow way */
-       hv_iterinit(hv);
+       hv_iterinit(ohv);
        while (entry = hv_iternext(ohv)) {
            hv_store(hv, HeKEY(entry), HeKLEN(entry), 
                     SvREFCNT_inc(HeVAL(entry)), HeHASH(entry));
@@ -1016,7 +1015,7 @@ hv_iternext(HV *hv)
     xhv = (XPVHV*)SvANY(hv);
     oldentry = entry = xhv->xhv_eiter;
 
-    if (SvRMAGICAL(hv) && (mg = mg_find((SV*)hv,'P'))) {
+    if (mg = SvTIED_mg((SV*)hv, 'P')) {
        SV *key = sv_newmortal();
        if (entry) {
            sv_setsv(key, HeSVKEY_force(entry));