richter 2004/02/02 11:29:57
Modified: . Changes.pod MANIFEST epdom.c test.pl
Log:
fix endless loop with call sub inside table
Revision Changes Path
1.225 +2 -0 embperl/Changes.pod
Index: Changes.pod
===================================================================
RCS file: /home/cvs/embperl/Changes.pod,v
retrieving revision 1.224
retrieving revision 1.225
diff -u -r1.224 -r1.225
--- Changes.pod 2 Feb 2004 19:06:15 -0000 1.224
+++ Changes.pod 2 Feb 2004 19:29:57 -0000 1.225
@@ -4,6 +4,8 @@
- Fix problem with JavaScript code in Form::Validate, when fields names
are non JavaScript Identifier.
+ - Fix endless loop with call sub inside table under some circumstances,
+ reported by Neil Gunton.
=head1 2.0b10 23. Jan 2004
1.88 +2 -0 embperl/MANIFEST
Index: MANIFEST
===================================================================
RCS file: /home/cvs/embperl/MANIFEST,v
retrieving revision 1.87
retrieving revision 1.88
diff -u -r1.87 -r1.88
--- MANIFEST 23 Jan 2004 07:37:12 -0000 1.87
+++ MANIFEST 2 Feb 2004 19:29:57 -0000 1.88
@@ -205,6 +205,7 @@
test/cmp/binary.htm
test/cmp/callsub.htm
test/cmp/sub2.htm
+test/cmp/subouttab.htm
test/cmp/changeattr.htm
test/cmp/chdir.htm
test/cmp/clearsess.htm
@@ -409,6 +410,7 @@
test/html/binary.htm
test/html/callsub.htm
test/html/sub2.htm
+test/html/subouttab.htm
test/html/changeattr.htm
test/html/chdir.htm
test/html/clearsess.htm
1.15 +17 -4 embperl/epdom.c
Index: epdom.c
===================================================================
RCS file: /home/cvs/embperl/epdom.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- epdom.c 23 Jan 2004 06:50:55 -0000 1.14
+++ epdom.c 2 Feb 2004 19:29:57 -0000 1.15
@@ -2848,13 +2848,26 @@
if (pNxtNode)
pNxtNode = Node_selfCondCloneNode (a, pRefNodeDomTree, pNxtNode,
nRefRepeatLevel) ;
else
- pNxtNode = Node_selfLevel (a, pRefNodeDomTree, pRefNode -> xNext,
nRefRepeatLevel) ; /* first one */
+ {
+ tNodeData * pParent ;
+
+ if ((pParent = Node_selfLevel (a, pRefNodeDomTree, pRefNode -> xParent,
nRefRepeatLevel)) == NULL ||
+ pParent -> xChilds != pRefNode -> xNext)
+ pNxtNode = Node_selfLevel (a, pRefNodeDomTree, pRefNode -> xNext,
nRefRepeatLevel) ; /* first one */
+ else
+ pNxtNode = NULL ;
+ }
xOrgNode = pNewNode -> xNdx ;
- pNxtNode -> xPrev = pNewNode -> xNdx ;
+ if (pNxtNode)
+ {
+ pNxtNode -> xPrev = pNewNode -> xNdx ;
+ pNewNode -> xNext = pNxtNode -> xNdx ;
+ }
+ else
+ pNewNode -> xNext = pRefNode -> xNext ;
pRefNode -> xNext = pNewNode -> xNdx ;
pNewNode -> xPrev = pRefNode -> xNdx ;
- pNewNode -> xNext = pNxtNode -> xNdx ;
if (pNewNode -> nType == ntypDocument)
{
1.134 +4 -1 embperl/test.pl
Index: test.pl
===================================================================
RCS file: /home/cvs/embperl/test.pl,v
retrieving revision 1.133
retrieving revision 1.134
diff -u -r1.133 -r1.134
--- test.pl 23 Jan 2004 06:50:55 -0000 1.133
+++ test.pl 2 Feb 2004 19:29:57 -0000 1.134
@@ -342,6 +342,9 @@
'sub2.htm' => {
'repeat' => 2,
},
+ 'subouttab.htm' => {
+ 'repeat' => 2,
+ },
'executesub.htm' => {
'version' => 2,
'repeat' => 2,
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]