summaryrefslogtreecommitdiff
path: root/perl.h
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2010-04-25 10:24:06 +0100
committerNicholas Clark <nick@ccl4.org>2010-04-25 10:24:06 +0100
commitdb93c0c46b34e8b2e37c671b7362d0fa2550f5f7 (patch)
treef37e703c765d7ba588504e95c21e9cfe2110012a /perl.h
parent8e6497b6389d5f941931c119402888bdb9fc59fc (diff)
downloadperl-db93c0c46b34e8b2e37c671b7362d0fa2550f5f7.tar.gz
Don't allocate pointer table entries from arenas.
Instead, allocate a private arena chain per pointer table, and free that chain when its pointer table is freed. Patch from RT #72598.
Diffstat (limited to 'perl.h')
-rw-r--r--perl.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/perl.h b/perl.h
index 960ba1ae37..50351a9d69 100644
--- a/perl.h
+++ b/perl.h
@@ -3453,9 +3453,6 @@ typedef struct magic_state MGS; /* struct magic_state defined in mg.c */
struct scan_data_t; /* Used in S_* functions in regcomp.c */
struct regnode_charclass_class; /* Used in S_* functions in regcomp.c */
-/* Keep next first in this structure, because sv_free_arenas take
- advantage of this to share code between the pte arenas and the SV
- body arenas */
struct ptr_tbl_ent {
struct ptr_tbl_ent* next;
const void* oldval;
@@ -3466,6 +3463,9 @@ struct ptr_tbl {
struct ptr_tbl_ent** tbl_ary;
UV tbl_max;
UV tbl_items;
+ struct ptr_tbl_arena *tbl_arena;
+ struct ptr_tbl_ent *tbl_arena_next;
+ struct ptr_tbl_ent *tbl_arena_end;
};
#if defined(iAPX286) || defined(M_I286) || defined(I80286)