[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[ ddd-Patches-806716 ] perl: bug-fix graph display of blessed references
From: |
SourceForge.net |
Subject: |
[ ddd-Patches-806716 ] perl: bug-fix graph display of blessed references (objects) |
Date: |
Mon, 15 Sep 2003 11:43:58 -0700 |
Patches item #806716, was opened at 2003-09-15 20:43
Message generated for change (Tracker Item Submitted) made by Item Submitter
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=307500&aid=806716&group_id=7500
Category: None
Group: None
Status: Open
Resolution: None
Priority: 5
Submitted By: Christian Hattemer (krille)
Assigned to: Nobody/Anonymous (nobody)
Summary: perl: bug-fix graph display of blessed references (objects)
Initial Comment:
This patch has been posted to the DDD mailing list by Peter Ernst on Wed, 5 Jun
2002 17:36:12 +0200 (MET DST)
-----------------------------------------------------------
DDD 3.3.1 with Perl: when using the graphical display on reference
variables, de-referencing works nicely through
e.g. a double-mouse click (by means of code in
ddd/deref.C). However, if the references is
blessed (i.e. it is a object reference),
de-referencing does NOT work.
Example: graph display $SeqInfoObj
p $SeqInfoObj
W3H::Parser::Seqinfo=HASH(0x4d3738)
i.e. $SeqInfoObj is a blessed reference
double-click on the graph does NOT dereference, because
the code in ddd/deref.C tries to get the "type" of the
reference (in this case HASH) by parsing the output of
" p $SeqInfoObj ", and considers the first identifier as
"type". In this case the type is "W3H" which is wrong.
Interestingly, the regular expression to parse the output
of " p $SeqInfoObj " (rxperlref line 359 in ddd/rxscan.L)
already knows about the "more complicated" syntax. I.e. it
is not necessary to fix something here.
Fix description:
Correct is is to take the first identifier after a
"=". This works for blessed and un-blessed references
(un-blessed references don't have a "=" character in the
output of " p $simple_ref "). I.e. the bug is fixed by
changing line 72 in ddd/deref.C
from:
ref = val.through(rxidentifier);
to:
ref = val.at(rxidentifier, val.index("=") + 1);
on a blessed reference, val.index("=") + 1 points to the first
character after the "=" sign,
on a un-blessed reference, val.index("=") + 1 points to character 0.
The fix is working as you can see from the history file below:
$SeqInfoObj is a blessed hash-reference
$SeqInfoObj->{'entries'} is an un-blessed array-reference
$SeqInfoObj->{'entries'}->[0] aka
${$SeqInfoObj->{'entries'}}[0]
is an un-blessed hash-reference
from ~/.ddd/history :
------------- begin snip -------------------
exec "perl -d w3h.debugtask dnasweep -infile=ensembl_cdna:enst00000000442"
cont
c 218
graph display $SeqInfoObj
graph display %$SeqInfoObj dependent on 1
graph display @{$SeqInfoObj->{'entries'}} dependent on 2
graph display %{${$SeqInfoObj->{'entries'}}[0]} dependent on 3
------------- end snip -------------------
in case you're interested ~/.ddd/log :
------------- begin snip -------------------
GNU DDD 3.3.1 (sparc-sun-solaris2.7)
Copyright (C) 1995-1999 Technische Universität Braunschweig, Germany.
Copyright (C) 1999-2001 Universität Passau, Germany.
Compiled with GCC 2.95.2 19991024 (release), libstdc++ 2.8.0
Requires X11R6, Xt11R6, Motif 2.1 (Motif Version 2.1.0)
Includes Athena Panner, DDD core
Built 2002-06-05 by Peter Ernst <unknown>.
$ /home/dok427/fox/ddd-3.3.1/ddd/ddd --perl w3h.debugtask
------------- end snip -------------------
Kind regards,
Peter Ernst
P.S: DDD is really a very nice program. Congratulations for it!
--
=======================================================================
Peter Ernst
Department of Molecular Biophysics - H0200
Deutsches Krebsforschungszentrum (German Cancer Research Center) DKFZ
Im Neuenheimer Feld 280
69120 Heidelberg, Germany phone: +49-6221-42-2330
http://genome.dkfz-heidelberg.de/ fax: +49-6221-42-2333
=======================================================================
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=307500&aid=806716&group_id=7500
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [ ddd-Patches-806716 ] perl: bug-fix graph display of blessed references (objects),
SourceForge.net <=