You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by be...@apache.org on 2004/04/11 20:10:49 UTC
cvs commit: apr-util/hooks apr_hooks.c
ben 2004/04/11 11:10:49
Modified: hooks Tag: APU_0_9_BRANCH apr_hooks.c
Log:
Make the topological sort pull out-of-order items to the front, instead of
pushing them to the back. This makes things stay where they want to be better.
Revision Changes Path
No revision
No revision
1.47.2.2 +24 -2 apr-util/hooks/apr_hooks.c
Index: apr_hooks.c
===================================================================
RCS file: /home/cvs/apr-util/hooks/apr_hooks.c,v
retrieving revision 1.47.2.1
retrieving revision 1.47.2.2
diff -u -r1.47.2.1 -r1.47.2.2
--- apr_hooks.c 13 Feb 2004 09:52:42 -0000 1.47.2.1
+++ apr_hooks.c 11 Apr 2004 18:10:49 -0000 1.47.2.2
@@ -126,6 +126,13 @@
return pData;
}
+/* Topologically sort, dragging out-of-order items to the front. Note that
+ this tends to preserve things that want to be near the front better, and
+ changing that behaviour might compromise some of Apache's behaviour (in
+ particular, mod_log_forensic might otherwise get pushed to the end, and
+ core.c's log open function used to end up at the end when pushing items
+ to the back was the methedology).
+*/
static TSort *tsort(TSort *pData,int nItems)
{
int nTotal;
@@ -138,9 +145,23 @@
for(n=0 ; ; ++n) {
if(n == nItems)
assert(0); /* we have a loop... */
- if(!pData[n].pNext && !pData[n].nPredecessors)
+ if(!pData[n].pNext)
break;
}
+ if(pData[n].nPredecessors) {
+ for(k=0 ; ; ++k) {
+ assert(k < nItems);
+ if(pData[n].ppPredecessors[k])
+ break;
+ }
+ for(i=0 ; ; ++i) {
+ assert(i < nItems);
+ if(&pData[i] == pData[n].ppPredecessors[k]) {
+ n=i;
+ break;
+ }
+ }
+ }
if(pTail)
pTail->pNext=&pData[n];
else
@@ -148,9 +169,10 @@
pTail=&pData[n];
pTail->pNext=pTail; /* fudge it so it looks linked */
for(i=0 ; i < nItems ; ++i)
- for(k=0 ; pData[i].ppPredecessors[k] ; ++k)
+ for(k=0 ; k < nItems ; ++k)
if(pData[i].ppPredecessors[k] == &pData[n]) {
--pData[i].nPredecessors;
+ pData[i].ppPredecessors[k]=NULL;
break;
}
}
Re: cvs commit: apr-util/hooks apr_hooks.c
Posted by Ben Laurie <be...@algroup.co.uk>.
Jeff Trawick wrote:
> ben@apache.org wrote:
>
>> ben 2004/04/11 11:10:49
>>
>> Modified: hooks Tag: APU_0_9_BRANCH apr_hooks.c
>> Log:
>> Make the topological sort pull out-of-order items to the front,
>> instead of
>> pushing them to the back. This makes things stay where they want to
>> be better.
>
>
> Don't these several commits need to go into the main branch as well?
Yep. I thought I'd wait for any screams before I screwed up both branches!
--
http://www.apache-ssl.org/ben.html http://www.thebunker.net/
"There is no limit to what a man can do or how far he can go if he
doesn't mind who gets the credit." - Robert Woodruff
Re: cvs commit: apr-util/hooks apr_hooks.c
Posted by Jeff Trawick <tr...@attglobal.net>.
ben@apache.org wrote:
> ben 2004/04/11 11:10:49
>
> Modified: hooks Tag: APU_0_9_BRANCH apr_hooks.c
> Log:
> Make the topological sort pull out-of-order items to the front, instead of
> pushing them to the back. This makes things stay where they want to be better.
Don't these several commits need to go into the main branch as well?