diff options
author | Jesse Luehrs <doy@tozt.net> | 2011-12-10 16:23:40 -0600 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2011-12-10 16:26:33 -0600 |
commit | e006ab793e155668184c71836c2d69a8eeac9757 (patch) | |
tree | 38ae38e20b95b521a699f27314aabe51819f31d5 /XS.xs | |
parent | 672ffdba4da7d100f0377139c087ea63c0f24ecd (diff) | |
download | package-stash-xs-e006ab793e155668184c71836c2d69a8eeac9757.tar.gz package-stash-xs-e006ab793e155668184c71836c2d69a8eeac9757.zip |
refactor a bit
Diffstat (limited to 'XS.xs')
-rw-r--r-- | XS.xs | 20 |
1 files changed, 11 insertions, 9 deletions
@@ -325,6 +325,15 @@ static SV *_get_name(SV *self) return ret; } +static void _real_gv_init(GV *gv, HV *stash, SV *name) +{ + char *name_pv; + STRLEN name_len; + + name_pv = SvPV(name, name_len); + gv_init(gv, stash, name_pv, name_len, 1); +} + static void _expand_glob(SV *self, SV *varname) { HV *namespace; @@ -339,12 +348,8 @@ static void _expand_glob(SV *self, SV *varname) croak("_expand_glob called on stash slot with expanded glob"); } else { - char *varname_pv; - STRLEN varname_len; - - varname_pv = SvPV(varname, varname_len); - gv_init(glob, namespace, varname_pv, varname_len, 1); SvREFCNT_inc(glob); + _real_gv_init(glob, namespace, varname); if (!hv_store_ent(namespace, varname, (SV*)glob, 0)) { croak("hv_store failed"); } @@ -583,11 +588,8 @@ add_symbol(self, variable, initial=NULL, ...) glob = (GV*)HeVAL(entry); } else { - char *varname_pv; - STRLEN varname_len; glob = (GV*)newSV(0); - varname_pv = SvPV(variable.name, varname_len); - gv_init(glob, namespace, varname_pv, varname_len, 1); + _real_gv_init(glob, namespace, variable.name); if (!hv_store_ent(namespace, variable.name, (SV*)glob, 0)) { croak("hv_store failed"); } |