Fix for bug 74786 (String cleanup). Non-copying tokenizer. r=Pike, sr=jst.
git-svn-id: svn://10.0.0.236/trunk@136765 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -59,7 +59,6 @@ LOBJS = ../source/base/Double.$(OBJ_SUFFIX) \
|
||||
../source/base/NamedMap.$(OBJ_SUFFIX) \
|
||||
../source/base/SimpleErrorObserver.$(OBJ_SUFFIX) \
|
||||
../source/base/Stack.$(OBJ_SUFFIX) \
|
||||
../source/base/Tokenizer.$(OBJ_SUFFIX) \
|
||||
../source/base/txAtoms.$(OBJ_SUFFIX) \
|
||||
../source/base/txExpandedNameMap.$(OBJ_SUFFIX) \
|
||||
../source/base/txURIUtils.$(OBJ_SUFFIX) \
|
||||
|
||||
@@ -1062,13 +1062,6 @@
|
||||
<FILEKIND>Text</FILEKIND>
|
||||
<FILEFLAGS></FILEFLAGS>
|
||||
</FILE>
|
||||
<FILE>
|
||||
<PATHTYPE>Name</PATHTYPE>
|
||||
<PATH>Tokenizer.cpp</PATH>
|
||||
<PATHFORMAT>MacOS</PATHFORMAT>
|
||||
<FILEKIND>Text</FILEKIND>
|
||||
<FILEFLAGS></FILEFLAGS>
|
||||
</FILE>
|
||||
<FILE>
|
||||
<PATHTYPE>Name</PATHTYPE>
|
||||
<PATH>NamedMap.cpp</PATH>
|
||||
@@ -1624,11 +1617,6 @@
|
||||
<PATH>NodeSet.cpp</PATH>
|
||||
<PATHFORMAT>MacOS</PATHFORMAT>
|
||||
</FILEREF>
|
||||
<FILEREF>
|
||||
<PATHTYPE>Name</PATHTYPE>
|
||||
<PATH>Tokenizer.cpp</PATH>
|
||||
<PATHFORMAT>MacOS</PATHFORMAT>
|
||||
</FILEREF>
|
||||
<FILEREF>
|
||||
<PATHTYPE>Name</PATHTYPE>
|
||||
<PATH>NamedMap.cpp</PATH>
|
||||
@@ -2934,13 +2922,6 @@
|
||||
<FILEKIND>Text</FILEKIND>
|
||||
<FILEFLAGS></FILEFLAGS>
|
||||
</FILE>
|
||||
<FILE>
|
||||
<PATHTYPE>Name</PATHTYPE>
|
||||
<PATH>Tokenizer.cpp</PATH>
|
||||
<PATHFORMAT>MacOS</PATHFORMAT>
|
||||
<FILEKIND>Text</FILEKIND>
|
||||
<FILEFLAGS></FILEFLAGS>
|
||||
</FILE>
|
||||
<FILE>
|
||||
<PATHTYPE>Name</PATHTYPE>
|
||||
<PATH>NamedMap.cpp</PATH>
|
||||
@@ -3512,11 +3493,6 @@
|
||||
<PATH>NodeSet.cpp</PATH>
|
||||
<PATHFORMAT>MacOS</PATHFORMAT>
|
||||
</FILEREF>
|
||||
<FILEREF>
|
||||
<PATHTYPE>Name</PATHTYPE>
|
||||
<PATH>Tokenizer.cpp</PATH>
|
||||
<PATHFORMAT>MacOS</PATHFORMAT>
|
||||
</FILEREF>
|
||||
<FILEREF>
|
||||
<PATHTYPE>Name</PATHTYPE>
|
||||
<PATH>NamedMap.cpp</PATH>
|
||||
@@ -3955,12 +3931,6 @@
|
||||
<PATH>Stack.cpp</PATH>
|
||||
<PATHFORMAT>MacOS</PATHFORMAT>
|
||||
</FILEREF>
|
||||
<FILEREF>
|
||||
<TARGETNAME>transformiixDebug.shlb</TARGETNAME>
|
||||
<PATHTYPE>Name</PATHTYPE>
|
||||
<PATH>Tokenizer.cpp</PATH>
|
||||
<PATHFORMAT>MacOS</PATHFORMAT>
|
||||
</FILEREF>
|
||||
<FILEREF>
|
||||
<TARGETNAME>transformiixDebug.shlb</TARGETNAME>
|
||||
<PATHTYPE>Name</PATHTYPE>
|
||||
|
||||
@@ -48,7 +48,6 @@ CPPSRCS = Double.cpp \
|
||||
NamedMap.cpp \
|
||||
SimpleErrorObserver.cpp \
|
||||
Stack.cpp \
|
||||
Tokenizer.cpp \
|
||||
txAtoms.cpp \
|
||||
txExpandedNameMap.cpp \
|
||||
txURIUtils.cpp
|
||||
|
||||
@@ -40,7 +40,6 @@ OBJS = ../base/Double.$(OBJ_SUFFIX) \
|
||||
../base/NamedMap.$(OBJ_SUFFIX) \
|
||||
../base/SimpleErrorObserver.$(OBJ_SUFFIX) \
|
||||
../base/Stack.$(OBJ_SUFFIX) \
|
||||
../base/Tokenizer.$(OBJ_SUFFIX) \
|
||||
../base/txAtoms.$(OBJ_SUFFIX) \
|
||||
../base/txExpandedNameMap.$(OBJ_SUFFIX) \
|
||||
../base/txStringUtils.$(OBJ_SUFFIX) \
|
||||
|
||||
@@ -34,9 +34,9 @@
|
||||
|
||||
#include "FunctionLib.h"
|
||||
#include "NodeSet.h"
|
||||
#include "Tokenizer.h"
|
||||
#include "txAtoms.h"
|
||||
#include "txIXPathContext.h"
|
||||
#include "txTokenizer.h"
|
||||
#include "XMLDOMUtils.h"
|
||||
|
||||
/*
|
||||
@@ -98,24 +98,24 @@ ExprResult* NodeSetFunctionCall::evaluate(txIEvalContext* aContext) {
|
||||
NodeSet* nodes = (NodeSet*)exprResult;
|
||||
int i;
|
||||
for (i = 0; i < nodes->size(); i++) {
|
||||
nsAutoString idList, id;
|
||||
nsAutoString idList;
|
||||
XMLDOMUtils::getNodeValue(nodes->get(i), idList);
|
||||
txTokenizer tokenizer(idList);
|
||||
while (tokenizer.hasMoreTokens()) {
|
||||
tokenizer.nextToken(id);
|
||||
Node* idNode = contextDoc->getElementById(id);
|
||||
Node* idNode =
|
||||
contextDoc->getElementById(tokenizer.nextToken());
|
||||
if (idNode)
|
||||
resultSet->add(idNode);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
nsAutoString idList, id;
|
||||
nsAutoString idList;
|
||||
exprResult->stringValue(idList);
|
||||
txTokenizer tokenizer(idList);
|
||||
while (tokenizer.hasMoreTokens()) {
|
||||
tokenizer.nextToken(id);
|
||||
Node* idNode = contextDoc->getElementById(id);
|
||||
Node* idNode =
|
||||
contextDoc->getElementById(tokenizer.nextToken());
|
||||
if (idNode)
|
||||
resultSet->add(idNode);
|
||||
}
|
||||
|
||||
@@ -38,12 +38,12 @@
|
||||
#include "txURIUtils.h"
|
||||
#include "XMLUtils.h"
|
||||
#include "XMLDOMUtils.h"
|
||||
#include "Tokenizer.h"
|
||||
#include "ExprResult.h"
|
||||
#include "XMLParser.h"
|
||||
#include "TxLog.h"
|
||||
#include "txAtoms.h"
|
||||
#include "txSingleNodeContext.h"
|
||||
#include "txTokenizer.h"
|
||||
#include "txVariableMap.h"
|
||||
#include "XSLTProcessor.h"
|
||||
|
||||
@@ -752,10 +752,9 @@ void ProcessorState::shouldStripSpace(const nsAString& aNames,
|
||||
ImportFrame* aImportFrame)
|
||||
{
|
||||
//-- split names on whitespace
|
||||
txTokenizer tokenizer(aNames);
|
||||
nsAutoString name;
|
||||
txTokenizer tokenizer(PromiseFlatString(aNames));
|
||||
while (tokenizer.hasMoreTokens()) {
|
||||
tokenizer.nextToken(name);
|
||||
const nsAString& name = tokenizer.nextToken();
|
||||
PRInt32 aNSID = kNameSpaceID_None;
|
||||
nsCOMPtr<nsIAtom> prefix;
|
||||
XMLUtils::getPrefix(name, getter_AddRefs(prefix));
|
||||
|
||||
@@ -42,7 +42,6 @@
|
||||
*/
|
||||
|
||||
#include "XSLTProcessor.h"
|
||||
#include "Tokenizer.h"
|
||||
#include "txAtoms.h"
|
||||
#include "TxLog.h"
|
||||
#include "txNodeSetContext.h"
|
||||
@@ -50,6 +49,7 @@
|
||||
#include "txRtfHandler.h"
|
||||
#include "txStringUtils.h"
|
||||
#include "txTextHandler.h"
|
||||
#include "txTokenizer.h"
|
||||
#include "txURIUtils.h"
|
||||
#include "txVariableMap.h"
|
||||
#include "txXSLTNumber.h"
|
||||
@@ -880,11 +880,9 @@ txXSLTProcessor::processAttributeSets(Element* aElement,
|
||||
|
||||
// Split names
|
||||
txTokenizer tokenizer(names);
|
||||
nsAutoString nameStr;
|
||||
while (tokenizer.hasMoreTokens()) {
|
||||
tokenizer.nextToken(nameStr);
|
||||
txExpandedName name;
|
||||
rv = name.init(nameStr, aElement, MB_FALSE);
|
||||
rv = name.init(tokenizer.nextToken(), aElement, MB_FALSE);
|
||||
if (NS_FAILED(rv)) {
|
||||
aPs->receiveError(NS_LITERAL_STRING("missing or malformed name in use-attribute-sets"));
|
||||
return;
|
||||
@@ -1458,28 +1456,11 @@ txXSLTProcessor::processTopLevel(Element* aStylesheet,
|
||||
if (element->getAttr(txXSLTAtoms::cdataSectionElements,
|
||||
kNameSpaceID_None, attValue)) {
|
||||
txTokenizer tokens(attValue);
|
||||
nsAutoString token;
|
||||
while (tokens.hasMoreTokens()) {
|
||||
tokens.nextToken(token);
|
||||
if (!XMLUtils::isValidQName(token)) {
|
||||
break;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIAtom> namePart;
|
||||
XMLUtils::getPrefix(token, getter_AddRefs(namePart));
|
||||
PRInt32 nsID = element->lookupNamespaceID(namePart);
|
||||
if (nsID == kNameSpaceID_Unknown) {
|
||||
// XXX ErrorReport: unknown prefix
|
||||
break;
|
||||
}
|
||||
XMLUtils::getLocalPart(token, getter_AddRefs(namePart));
|
||||
if (!namePart) {
|
||||
// XXX ErrorReport: out of memory
|
||||
break;
|
||||
}
|
||||
txExpandedName* qname = new txExpandedName(nsID, namePart);
|
||||
if (!qname) {
|
||||
// XXX ErrorReport: out of memory
|
||||
txExpandedName* qname = new txExpandedName();
|
||||
if (!qname || NS_FAILED(qname->init(tokens.nextToken(),
|
||||
element, PR_FALSE))) {
|
||||
// XXX ErrorReport
|
||||
break;
|
||||
}
|
||||
format.mCDATASectionElements.add(qname);
|
||||
|
||||
Reference in New Issue
Block a user