Ticket #1230 (closed bug: fixed)
src/pmc/eval.pmc: Walk the fixups, locate globals and nullify the Sub PMC
| Reported by: | jkeenan | Owned by: | plobsing |
|---|---|---|---|
| Priority: | normal | Milestone: | |
| Component: | core | Version: | 1.7.0 |
| Severity: | medium | Keywords: | |
| Cc: | Language: | ||
| Patch status: | Platform: |
Description
This ticket moves into the Trac system an issue previously discussed in the RT system as RT #46683.
139 =item C<opcode_t *invoke(void *next)>
140
141 Invokes the first subroutine in the eval code.
142
143 =cut
144
145 */
146
147 VTABLE opcode_t *invoke(void *next) {
148 PMC *sub = SELF.get_pmc_keyed_int(0);
149 return VTABLE_invoke(INTERP, sub, next);
150 }
151
152 VTABLE void destroy() {
153 /*
154 * If the compiled code contained any .sub (or .pcc.sub)
155 * subroutines, these subs got installed in the globals
156 * during compiling this bytecode segment.
157 *
158 * These globals still exist, calling them will segfault
159 * as the segment is destroyed now.
160 *
161 * RT#46683 walk the fixups for this segment, locate globals
162 * and nullify the Sub PMC.
163 * This probably needs a pointer into the globals.
164 *
165 * OTOH - if the global exists - this eval pmc ought
166 * to be alive and destroy isn't called.
167 */
168 PackFile_Segment *seg;
169 PackFile_ByteCode *cur_cs;
170 Parrot_Sub_attributes *sub_data;
171
...
kid51
Change History
Note: See
TracTickets for help on using
tickets.
