X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=Name.xs;h=5d36d141e178fc95a2346c991db0a05edee91d19;hb=85cf5faea36fd3017da852c57a42e804be210419;hp=f6d7bc202cccdb58c8621476b1d2c648252a79cc;hpb=5804808d5265cff7e819429bab5c511c5f22a3bb;p=p5sagit%2FSub-Name.git diff --git a/Name.xs b/Name.xs index f6d7bc2..5d36d14 100644 --- a/Name.xs +++ b/Name.xs @@ -1,4 +1,5 @@ /* Copyright (C) 2004, 2008 Matthijs van Duin. All rights reserved. + * Copyright (C) 2014, cPanel Inc. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. */ @@ -30,7 +31,7 @@ subname(name, sub) CV *cv = NULL; GV *gv; HV *stash = CopSTASH(PL_curcop); - char *s, *end = NULL, saved; + char *s, *end = NULL; MAGIC *mg; PPCODE: if (!SvROK(sub) && SvGMAGICAL(sub)) @@ -57,13 +58,12 @@ subname(name, sub) end = s; } s--; - if (end) { - saved = *end; - *end = 0; - stash = GvHV(gv_fetchpv(name, TRUE, SVt_PVHV)); - *end = saved; - name = end; - } + if (end) { + char *namepv = savepvn(name, end - name); + stash = GvHV(gv_fetchpv(namepv, TRUE, SVt_PVHV)); + Safefree(namepv); + name = end; + } gv = (GV *) newSV(0); gv_init(gv, stash, name, s - name, TRUE);