X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=hv.c;h=76180f2d8acc5b515d811262c755d965903e37f2;hb=ecd6d377f426b0484f9eed4a320136e84a8ba076;hp=ad3c3cda02ac11d47ea4b7d78d3cf9d176d7fec3;hpb=cbec93472053303a097b494b2027e63ce8f57918;p=p5sagit%2Fp5-mst-13.2.git diff --git a/hv.c b/hv.c index ad3c3cd..76180f2 100644 --- a/hv.c +++ b/hv.c @@ -99,7 +99,7 @@ Perl_unshare_hek(pTHX_ HEK *hek) #if defined(USE_ITHREADS) HE * -Perl_he_dup(pTHX_ HE *e, bool shared) +Perl_he_dup(pTHX_ HE *e, bool shared, clone_params* param) { HE *ret; @@ -114,14 +114,14 @@ Perl_he_dup(pTHX_ HE *e, bool shared) ret = new_HE(); ptr_table_store(PL_ptr_table, e, ret); - HeNEXT(ret) = he_dup(HeNEXT(e),shared); + HeNEXT(ret) = he_dup(HeNEXT(e),shared, param); if (HeKLEN(e) == HEf_SVKEY) - HeKEY_sv(ret) = SvREFCNT_inc(sv_dup(HeKEY_sv(e))); + HeKEY_sv(ret) = SvREFCNT_inc(sv_dup(HeKEY_sv(e), param)); else if (shared) HeKEY_hek(ret) = share_hek(HeKEY(e), HeKLEN_UTF8(e), HeHASH(e)); else HeKEY_hek(ret) = save_hek(HeKEY(e), HeKLEN_UTF8(e), HeHASH(e)); - HeVAL(ret) = SvREFCNT_inc(sv_dup(HeVAL(e))); + HeVAL(ret) = SvREFCNT_inc(sv_dup(HeVAL(e), param)); return ret; } #endif /* USE_ITHREADS */ @@ -441,7 +441,7 @@ Perl_hv_store(pTHX_ HV *hv, const char *key, I32 klen, SV *val, register U32 has #ifdef ENV_IS_CASELESS else if (mg_find((SV*)hv, PERL_MAGIC_env)) { key = savepvn(key,klen); - key = strupr(key); + key = (const char*)strupr((char*)key); hash = 0; } #endif @@ -598,9 +598,9 @@ Perl_hv_store_ent(pTHX_ HV *hv, SV *keysv, SV *val, register U32 hash) entry = new_HE(); if (HvSHAREKEYS(hv)) - HeKEY_hek(entry) = share_hek(key, is_utf8?-klen:klen, hash); + HeKEY_hek(entry) = share_hek(key, is_utf8?-(I32)klen:klen, hash); else /* gotta do the real thing */ - HeKEY_hek(entry) = save_hek(key, is_utf8?-klen:klen, hash); + HeKEY_hek(entry) = save_hek(key, is_utf8?-(I32)klen:klen, hash); if (key != keysave) Safefree(key); HeVAL(entry) = val;