From 6558ba4e62dba99f2a4d830f1c16f8d1c255b316 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Sandmann=20Pedersen?= Date: Fri, 12 May 2006 21:53:28 +0000 Subject: [PATCH] =?UTF-8?q?Fri=20May=2012=2017:51:26=202006=20S=C3=B8ren?= =?UTF-8?q?=20Sandmann=20=20Keep=20track=20of=20the?= =?UTF-8?q?=20previous=20item=20and=20update=20its=20next=20pointer=20when?= =?UTF-8?q?=20deleting=20=20=20=20=20from=20the=20linked=20list.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ChangeLog | 6 ++++++ Xext/sync.c | 17 ++++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 54d36a7d7..d42326c2c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Fri May 12 17:51:26 2006 Søren Sandmann + + * Xext/sync.c (SyncDeleteTriggerFromCounter): Keep track of the + previous item and update its next pointer when deleting from the + linked list. + 2006-05-11 Matthias Hopf * fb/fbpict.c: (fbComposite): diff --git a/Xext/sync.c b/Xext/sync.c index c88d81c36..e1383cea3 100644 --- a/Xext/sync.c +++ b/Xext/sync.c @@ -302,22 +302,33 @@ SyncDeleteTriggerFromCounter(pTrigger) SyncTrigger *pTrigger; { SyncTriggerList *pCur; + SyncTriggerList *pPrev; /* pCounter needs to be stored in pTrigger before calling here. */ if (!pTrigger->pCounter) return; - for (pCur = pTrigger->pCounter->pTriglist; pCur; pCur = pCur->next) + pPrev = NULL; + pCur = pTrigger->pCounter->pTriglist; + + while (pCur) { if (pCur->pTrigger == pTrigger) { - pTrigger->pCounter->pTriglist = pCur->next; + if (pPrev) + pPrev->next = pCur->next; + else + pTrigger->pCounter->pTriglist = pCur->next; + xfree(pCur); break; } + + pPrev = pCur; + pCur = pCur->next; } - + if (IsSystemCounter(pTrigger->pCounter)) SyncComputeBracketValues(pTrigger->pCounter, /*startOver*/ TRUE); }