kernel/eka/drivers/dma/dmapil.cpp
branchRCL_3
changeset 21 e7d2d738d3c2
parent 20 597aaf25e343
child 22 2f92ad2dc5db
--- a/kernel/eka/drivers/dma/dmapil.cpp	Fri Mar 12 15:50:11 2010 +0200
+++ b/kernel/eka/drivers/dma/dmapil.cpp	Mon Mar 15 12:45:50 2010 +0200
@@ -1,4 +1,4 @@
-// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of the License "Eclipse Public License v1.0"
@@ -861,7 +861,11 @@
 		// release threads doing CancelAll()
 		waiters->Signal();
 		}
-	else if (!error && iController->IsIdle(*this) && !iReqQ.IsEmpty() && !iDfc.Queued())
+	// (iController may be NULL here if the channel was closed in the client callback.)
+	else if (!error &&
+			 iController && iController->IsIdle(*this) &&
+			 !iReqQ.IsEmpty() &&
+			 !iDfc.Queued())
 		{
 		// Wait for a bit. If during that time the condition goes away then it
 		// was a 'spurious missed interrupt', in which case we just do nothing.