diff options
author | Nicholas Clark <nick@ccl4.org> | 2010-10-09 20:34:29 +0100 |
---|---|---|
committer | Nicholas Clark <nick@ccl4.org> | 2010-10-09 20:34:29 +0100 |
commit | 74e8ce349633219f5a1aba2c2aaa959675e24299 (patch) | |
tree | 47bcedeac972068130a0a4ae5118feb2b069919e /toke.c | |
parent | d9159685e05b3d86d58992e4879989b659852d4a (diff) | |
download | perl-74e8ce349633219f5a1aba2c2aaa959675e24299.tar.gz |
Create populate_isa() to de-duplicate logic to populate @ISA.
Previously yylex() was conditionally populating @AnyDBM_File::ISA (if it was not
set, and the token dbmopen was seen), and init_predump_symbols() was populating
@IO::File::ISA (unconditionally, but this is so early that nothing previously
could have set it). This refactoring eliminates code duplication.
Diffstat (limited to 'toke.c')
-rw-r--r-- | toke.c | 24 |
1 files changed, 7 insertions, 17 deletions
@@ -6914,23 +6914,13 @@ Perl_yylex(pTHX) UNI(OP_DELETE); case KEY_dbmopen: - { - /* NOTE: No support for tied ISA */ - AV *isa = get_av("AnyDBM_File::ISA", GV_ADD | GV_ADDMULTI); - - if(AvFILLp(isa) == -1) { - av_push(isa, newSVpvs("NDBM_File")); - gv_stashpvs("NDBM_File", GV_ADD); - av_push(isa, newSVpvs("DB_File")); - gv_stashpvs("DB_File", GV_ADD); - av_push(isa, newSVpvs("GDBM_File")); - gv_stashpvs("GDBM_File", GV_ADD); - av_push(isa, newSVpvs("SDBM_File")); - gv_stashpvs("SDBM_File", GV_ADD); - av_push(isa, newSVpvs("ODBM_File")); - gv_stashpvs("ODBM_File", GV_ADD); - } - } + Perl_populate_isa(aTHX_ STR_WITH_LEN("AnyDBM_File::ISA"), + STR_WITH_LEN("NDBM_File::"), + STR_WITH_LEN("DB_File::"), + STR_WITH_LEN("GDBM_File::"), + STR_WITH_LEN("SDBM_File::"), + STR_WITH_LEN("ODBM_File::"), + NULL); LOP(OP_DBMOPEN,XTERM); case KEY_dbmclose: |