void *data = mDataSourceTable->Get(&skey); if (data)
nsCOMPtr<nsISupports> supports = getter_AddRefs(NS_STATIC_CAST(nsISupports*, mDataSourceTable->Get(&skey))); if (supports)
nsChromeRegistry::InitializeDataSource(nsString &aPackage,                                       nsString &aProvider,                                       nsIRDFDataSource **aResult){    nsCAutoString chromeFile, overlayFile;    // Retrieve the mInner data source.    chromeFile = "resource:/chrome/";    chromeFile += aPackage;    chromeFile += aProvider; // provider already has a / in the front of it    chromeFile += "/";    overlayFile = chromeFile;    chromeFile += "chrome.rdf";    overlayFile += "overlays.rdf";    if (mDataSourceTable)    {      // current.rdf and overlays.rdf are loaded in pairs and so if one is loaded, the other should be too.      nsStringKey skey(chromeFile);      void *data = mDataSourceTable->Get(&skey);      if (data)      {        nsCOMPtr<nsIRDFDataSource> dataSource;        nsISupports *supports = NS_STATIC_CAST(nsISupports*, data);                dataSource = do_QueryInterface(supports);        if (dataSource)        {          *aResult = dataSource;          NS_ADDREF(*aResult);          return NS_OK;        }        return NS_ERROR_FAILURE;      }      else if (mDataSourceTable->Exists(&skey))      	return NS_OK;    }   nsCOMPtr<nsIRDFDataSource> overlayDataSource;   LoadDataSource(chromeFile, aResult);   LoadDataSource(overlayFile, getter_AddRefs(overlayDataSource));   return NS_OK;}