mdb_err err;  nsIMdbCell* cell; err = mCurrent->GetCell(mEnv, mColumn, &cell); if (err != 0) return NS_ERROR_FAILURE;  rv = NS_ERROR_FAILURE;   mdbYarn yarn; err = cell->AliasYarn(mEnv, &yarn); if (err == 0) { nsCAutoString uri((const char*) yarn.mYarn_Buf, yarn.mYarn_Fill);  nsCOMPtr<nsIRDFResource> resource; rv = gRDFService->GetResource(uri, getter_AddRefs(resource)); if (NS_SUCCEEDED(rv)) { *_result = resource; NS_ADDREF(*_result); } }  if (cell) cell->CutStrongRef(mEnv);
rv = ConvertToISupports(mCurrent, _result);
nsMdbTableEnumerator::GetNext(nsISupports** _result){  nsresult rv;  PRBool hasMore;  rv = HasMoreElements(&hasMore);  if (NS_FAILED(rv)) return rv;  if (! hasMore)    return NS_ERROR_UNEXPECTED;  mdb_err err;  nsIMdbCell* cell;  err = mCurrent->GetCell(mEnv, mColumn, &cell);  if (err != 0) return NS_ERROR_FAILURE;  rv = NS_ERROR_FAILURE;  // XXX cell might be null if no value set  mdbYarn yarn;  err = cell->AliasYarn(mEnv, &yarn);  if (err == 0) {    nsCAutoString uri((const char*) yarn.mYarn_Buf, yarn.mYarn_Fill);    nsCOMPtr<nsIRDFResource> resource;    rv = gRDFService->GetResource(uri, getter_AddRefs(resource));    if (NS_SUCCEEDED(rv)) {      *_result = resource;      NS_ADDREF(*_result);    }  }    if (cell)    cell->CutStrongRef(mEnv);  mCurrent->CutStrongRef(mEnv);  mCurrent = nsnull;  return rv;}