PL_strfree((char*) (*hep)->key);
RDFServiceImpl::UnregisterDataSource(nsIRDFDataSource* aDataSource){    NS_PRECONDITION(aDataSource != nsnull, "null ptr");    if (! aDataSource)        return NS_ERROR_NULL_POINTER;    nsresult rv;    nsXPIDLCString uri;    rv = aDataSource->GetURI(getter_Copies(uri));    if (NS_FAILED(rv)) return rv;    //NS_ASSERTION(uri != nsnull, "datasource has no URI");    if (! uri)        return NS_ERROR_UNEXPECTED;    PLHashEntry** hep =        PL_HashTableRawLookup(mNamedDataSources, (*mNamedDataSources->keyHash)(uri), uri);    // It may well be that this datasource was never registered. If    // so, don't unregister it.    if (! *hep || ((*hep)->value != aDataSource))        return NS_OK;    PL_strfree((char*) (*hep)->key);    // N.B., we only held a weak reference to the datasource, so we    // don't release here.    PL_HashTableRawRemove(mNamedDataSources, hep, *hep);    PR_LOG(gLog, PR_LOG_ALWAYS,           ("rdfserv unregister-datasource [%p] %s",            aDataSource, (const char*) uri));    return NS_OK;}