X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=hv.c;h=1b1e06115d5a23e46aa6ada76239889da48eacd9;hb=d4ced10d0773d7b2aaa8e52df351060660783e30;hp=1e55aedfdc567e322d9c269d19ee39324f2c87aa;hpb=75a54232dfd9355b4d1126912a62716a93159565;p=p5sagit%2Fp5-mst-13.2.git diff --git a/hv.c b/hv.c index 1e55aed..1b1e061 100644 --- a/hv.c +++ b/hv.c @@ -435,8 +435,8 @@ Perl_hv_store(pTHX_ HV *hv, const char *key, I32 klen, SV *val, register U32 has return 0; #ifdef ENV_IS_CASELESS else if (mg_find((SV*)hv,'E')) { - SV *sv = sv_2mortal(newSVpvn(key,klen)); - key = strupr(SvPVX(sv)); + key = savepvn(key,klen); + key = strupr(key); hash = 0; } #endif @@ -927,11 +927,12 @@ Perl_hv_exists_ent(pTHX_ HV *hv, SV *keysv, U32 hash) if (SvRMAGICAL(hv)) { if (mg_find((SV*)hv,'P')) { + SV* svret = sv_newmortal(); sv = sv_newmortal(); keysv = sv_2mortal(newSVsv(keysv)); mg_copy((SV*)hv, sv, (char*)keysv, HEf_SVKEY); - magic_existspack(sv, mg_find(sv, 'p')); - return SvTRUE(sv); + magic_existspack(svret, mg_find(sv, 'p')); + return SvTRUE(svret); } #ifdef ENV_IS_CASELESS else if (mg_find((SV*)hv,'E')) { @@ -1012,7 +1013,6 @@ S_hsplit(pTHX_ HV *hv) return; } #else -#define MALLOC_OVERHEAD 16 New(2, a, PERL_HV_ARRAY_ALLOC_BYTES(newsize), char); if (!a) { PL_nomemok = FALSE;