diff options
author | Father Chrysostomos <sprout@cpan.org> | 2013-10-28 16:14:35 -0700 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2013-10-28 16:15:11 -0700 |
commit | 43e4250a611bbded7aab070226e8d756638cd569 (patch) | |
tree | bc86c70fc3d612cb15413d27ee121e46c64d1309 /mg.c | |
parent | 2e3295e33c63f6b4e7c3db43ec277607d5ce716d (diff) | |
download | perl-43e4250a611bbded7aab070226e8d756638cd569.tar.gz |
[perl #119799] Set breakpoints without *DB::dbline
The elements of the %{"_<..."} hashes (where ‘...’ is the filename),
whose keys are line numbers, are used to set breakpoints on the given
lines. The corresponding @{"_<..."} array contains the actual lines
of source code.
%{"_<..."} actually acts on the array of lines that @DB::dbline is
aliased to. The assumption is that *DB::dbline = *{"_<..."} will have
taken place first. Hence, all %{"_<..."} hashes are the same, when it
comes to writing to keys.
It is more useful for each %{"_<..."} hash to set breakpoints on its
corresponding file’s lines regardless of whether @DB::dbline has been
aliased, so that is what this commit does.
Each hash’s mg_obj pointer in its dbfile magic now points to the
array, and magic_setdbline uses it instead of PL_DBline.
Diffstat (limited to 'mg.c')
-rw-r--r-- | mg.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -1974,7 +1974,8 @@ Perl_magic_setdbline(pTHX_ SV *sv, MAGIC *mg) /* Use sv_2iv instead of SvIV() as the former generates smaller code, and setting/clearing debugger breakpoints is not a hot path. */ - svp = av_fetch(GvAV(PL_DBline), sv_2iv(MUTABLE_SV((mg)->mg_ptr)), FALSE); + svp = av_fetch(MUTABLE_AV(mg->mg_obj), + sv_2iv(MUTABLE_SV((mg)->mg_ptr)), FALSE); if (svp && SvIOKp(*svp)) { OP * const o = INT2PTR(OP*,SvIVX(*svp)); |