diff --git a/suite/browser/src/nsInternetSearchService.cpp b/suite/browser/src/nsInternetSearchService.cpp index 573ac5bafd5d..3d5cebecb483 100755 --- a/suite/browser/src/nsInternetSearchService.cpp +++ b/suite/browser/src/nsInternetSearchService.cpp @@ -2289,8 +2289,8 @@ InternetSearchDataSourceCallback::OnStopRequest(nsIChannel* channel, nsISupports const PRUnichar *relUni = relItem.GetUnicode(); if (relUni) { - // take out any characters that aren't numeric or "%" nsAutoString relStr(relUni); + // take out any characters that aren't numeric or "%" PRInt32 len = relStr.Length(); for (PRInt32 x=len-1; x>=0; x--) { @@ -2312,24 +2312,31 @@ InternetSearchDataSourceCallback::OnStopRequest(nsIChannel* channel, nsISupports { relStr += PRUnichar('%'); } + relItem = relStr; } else { - relStr = "-"; - } - - relUni = relStr.GetUnicode(); - - nsCOMPtr relLiteral; - if (NS_SUCCEEDED(rv = gRDFService->GetLiteral(relUni, getter_AddRefs(relLiteral)))) - { - if (relLiteral) - { - mDataSource->Assert(res, kNC_Relevance, relLiteral, PR_TRUE); - } + relItem.Truncate(); } } + } + if (relItem.Length() < 1) + { + relItem = "-"; + } + const PRUnichar *relItemUni = relItem.GetUnicode(); + nsCOMPtr relLiteral; + if (NS_SUCCEEDED(rv = gRDFService->GetLiteral(relItemUni, getter_AddRefs(relLiteral)))) + { + if (relLiteral) + { + mDataSource->Assert(res, kNC_Relevance, relLiteral, PR_TRUE); + } + } + + if ((relItem.Length() > 0) && (!relItem.Equals("-"))) + { // If its a percentage, remove "%" if (relItem[relItem.Length()-1] == PRUnichar('%')) { @@ -2340,19 +2347,23 @@ InternetSearchDataSourceCallback::OnStopRequest(nsIChannel* channel, nsISupports nsAutoString zero("000"); if (relItem.Length() < 3) { - relItem.Insert(zero, 0, 3-relItem.Length()); + relItem.Insert(zero, 0, zero.Length() - relItem.Length()); } + } + else + { + relItem = "000"; + } - const PRUnichar *relSortUni = relItem.GetUnicode(); - if (relSortUni) + const PRUnichar *relSortUni = relItem.GetUnicode(); + if (relSortUni) + { + nsCOMPtr relSortLiteral; + if (NS_SUCCEEDED(rv = gRDFService->GetLiteral(relSortUni, getter_AddRefs(relSortLiteral)))) { - nsCOMPtr relSortLiteral; - if (NS_SUCCEEDED(rv = gRDFService->GetLiteral(relSortUni, getter_AddRefs(relSortLiteral)))) + if (relSortLiteral) { - if (relSortLiteral) - { - mDataSource->Assert(res, kNC_RelevanceSort, relSortLiteral, PR_TRUE); - } + mDataSource->Assert(res, kNC_RelevanceSort, relSortLiteral, PR_TRUE); } } } diff --git a/xpfe/components/search/src/nsInternetSearchService.cpp b/xpfe/components/search/src/nsInternetSearchService.cpp index 573ac5bafd5d..3d5cebecb483 100755 --- a/xpfe/components/search/src/nsInternetSearchService.cpp +++ b/xpfe/components/search/src/nsInternetSearchService.cpp @@ -2289,8 +2289,8 @@ InternetSearchDataSourceCallback::OnStopRequest(nsIChannel* channel, nsISupports const PRUnichar *relUni = relItem.GetUnicode(); if (relUni) { - // take out any characters that aren't numeric or "%" nsAutoString relStr(relUni); + // take out any characters that aren't numeric or "%" PRInt32 len = relStr.Length(); for (PRInt32 x=len-1; x>=0; x--) { @@ -2312,24 +2312,31 @@ InternetSearchDataSourceCallback::OnStopRequest(nsIChannel* channel, nsISupports { relStr += PRUnichar('%'); } + relItem = relStr; } else { - relStr = "-"; - } - - relUni = relStr.GetUnicode(); - - nsCOMPtr relLiteral; - if (NS_SUCCEEDED(rv = gRDFService->GetLiteral(relUni, getter_AddRefs(relLiteral)))) - { - if (relLiteral) - { - mDataSource->Assert(res, kNC_Relevance, relLiteral, PR_TRUE); - } + relItem.Truncate(); } } + } + if (relItem.Length() < 1) + { + relItem = "-"; + } + const PRUnichar *relItemUni = relItem.GetUnicode(); + nsCOMPtr relLiteral; + if (NS_SUCCEEDED(rv = gRDFService->GetLiteral(relItemUni, getter_AddRefs(relLiteral)))) + { + if (relLiteral) + { + mDataSource->Assert(res, kNC_Relevance, relLiteral, PR_TRUE); + } + } + + if ((relItem.Length() > 0) && (!relItem.Equals("-"))) + { // If its a percentage, remove "%" if (relItem[relItem.Length()-1] == PRUnichar('%')) { @@ -2340,19 +2347,23 @@ InternetSearchDataSourceCallback::OnStopRequest(nsIChannel* channel, nsISupports nsAutoString zero("000"); if (relItem.Length() < 3) { - relItem.Insert(zero, 0, 3-relItem.Length()); + relItem.Insert(zero, 0, zero.Length() - relItem.Length()); } + } + else + { + relItem = "000"; + } - const PRUnichar *relSortUni = relItem.GetUnicode(); - if (relSortUni) + const PRUnichar *relSortUni = relItem.GetUnicode(); + if (relSortUni) + { + nsCOMPtr relSortLiteral; + if (NS_SUCCEEDED(rv = gRDFService->GetLiteral(relSortUni, getter_AddRefs(relSortLiteral)))) { - nsCOMPtr relSortLiteral; - if (NS_SUCCEEDED(rv = gRDFService->GetLiteral(relSortUni, getter_AddRefs(relSortLiteral)))) + if (relSortLiteral) { - if (relSortLiteral) - { - mDataSource->Assert(res, kNC_RelevanceSort, relSortLiteral, PR_TRUE); - } + mDataSource->Assert(res, kNC_RelevanceSort, relSortLiteral, PR_TRUE); } } }