if (literal) { NS_ADDREF(literal); *aLiteral = literal;
if (PL_DHASH_ENTRY_IS_BUSY(hdr)) { LiteralHashEntry *entry = NS_STATIC_CAST(LiteralHashEntry *, hdr); NS_ADDREF(*aLiteral = entry->mLiteral);
RDFServiceImpl::GetLiteral(const PRUnichar* aValue, nsIRDFLiteral** aLiteral){    NS_PRECONDITION(aValue != nsnull, "null ptr");    if (! aValue)        return NS_ERROR_NULL_POINTER;    NS_PRECONDITION(aLiteral != nsnull, "null ptr");    if (! aLiteral)        return NS_ERROR_NULL_POINTER;    // See if we have on already cached    nsIRDFLiteral* literal =        NS_STATIC_CAST(nsIRDFLiteral*, PL_HashTableLookup(mLiterals, aValue));    if (literal) {        NS_ADDREF(literal);        *aLiteral = literal;        return NS_OK;    }    // Nope. Create a new one    return LiteralImpl::Create(aValue, aLiteral);}