We always access globalComponentList[] at indexComponent=-1 which causes a
segfault. Use i as the index instead.

Signed-off-by: Qais Yousef <qais.yousef@imgtec.com>

--- bellagio-0.9.3/src/omx_reference_resource_manager.c.old	2012-03-13 10:15:25.743940980 +0000
+++ bellagio-0.9.3/src/omx_reference_resource_manager.c	2012-03-13 10:18:02.201971009 +0000
@@ -485,7 +485,6 @@
 OMX_ERRORTYPE RM_removeFromWaitForResource(OMX_COMPONENTTYPE *openmaxStandComp) {
 	omx_base_component_PrivateType* omx_base_component_Private;
 	int i = 0;
-	int indexComponent = -1;
 
 	DEBUG(DEB_LEV_FUNCTION_NAME, "In %s\n", __func__);
 	omx_base_component_Private = (omx_base_component_PrivateType*)openmaxStandComp->pComponentPrivate;
@@ -493,16 +492,13 @@
 	while(listOfcomponentRegistered[i].component_name != NULL ) {
 		if (!strcmp(listOfcomponentRegistered[i].component_name, omx_base_component_Private->name)) {
 			// found component in the list of the resource manager
-			removeElemFromList(&globalComponentList[indexComponent], openmaxStandComp);
-			break;
+			removeElemFromList(&globalComponentList[i], openmaxStandComp);
+			DEBUG(DEB_LEV_FUNCTION_NAME, "Out of %s\n", __func__);
+			return OMX_ErrorNone;
 		}
 		i++;
 	}
-	if (indexComponent <0) {
-		// No resource to be handled
-		DEBUG(DEB_LEV_ERR, "In %s No resource to be handled\n", __func__);
-		return OMX_ErrorNone;
-	}
-	DEBUG(DEB_LEV_FUNCTION_NAME, "Out of %s\n", __func__);
+	// No resource to be handled
+	DEBUG(DEB_LEV_ERR, "In %s No resource to be handled\n", __func__);
 	return OMX_ErrorNone;
 }
