Unverified Commit 1c5b90f4 authored by Milo Yip's avatar Milo Yip Committed by GitHub

Merge pull request #1414 from ylavic/regex_allocator

Use passed in allocator for internal regex parser.
parents a6321605 b0c96f9b
...@@ -118,7 +118,8 @@ public: ...@@ -118,7 +118,8 @@ public:
template <typename, typename> friend class GenericRegexSearch; template <typename, typename> friend class GenericRegexSearch;
GenericRegex(const Ch* source, Allocator* allocator = 0) : GenericRegex(const Ch* source, Allocator* allocator = 0) :
states_(allocator, 256), ranges_(allocator, 256), root_(kRegexInvalidState), stateCount_(), rangeCount_(), ownAllocator_(allocator ? 0 : RAPIDJSON_NEW(Allocator)()), allocator_(allocator ? allocator : ownAllocator_),
states_(allocator_, 256), ranges_(allocator_, 256), root_(kRegexInvalidState), stateCount_(), rangeCount_(),
anchorBegin_(), anchorEnd_() anchorBegin_(), anchorEnd_()
{ {
GenericStringStream<Encoding> ss(source); GenericStringStream<Encoding> ss(source);
...@@ -126,7 +127,10 @@ public: ...@@ -126,7 +127,10 @@ public:
Parse(ds); Parse(ds);
} }
~GenericRegex() {} ~GenericRegex()
{
RAPIDJSON_DELETE(ownAllocator_);
}
bool IsValid() const { bool IsValid() const {
return root_ != kRegexInvalidState; return root_ != kRegexInvalidState;
...@@ -188,10 +192,9 @@ private: ...@@ -188,10 +192,9 @@ private:
template <typename InputStream> template <typename InputStream>
void Parse(DecodedStream<InputStream, Encoding>& ds) { void Parse(DecodedStream<InputStream, Encoding>& ds) {
Allocator allocator; Stack<Allocator> operandStack(allocator_, 256); // Frag
Stack<Allocator> operandStack(&allocator, 256); // Frag Stack<Allocator> operatorStack(allocator_, 256); // Operator
Stack<Allocator> operatorStack(&allocator, 256); // Operator Stack<Allocator> atomCountStack(allocator_, 256); // unsigned (Atom per parenthesis)
Stack<Allocator> atomCountStack(&allocator, 256); // unsigned (Atom per parenthesis)
*atomCountStack.template Push<unsigned>() = 0; *atomCountStack.template Push<unsigned>() = 0;
...@@ -582,6 +585,8 @@ private: ...@@ -582,6 +585,8 @@ private:
} }
} }
Allocator* ownAllocator_;
Allocator* allocator_;
Stack<Allocator> states_; Stack<Allocator> states_;
Stack<Allocator> ranges_; Stack<Allocator> ranges_;
SizeType root_; SizeType root_;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment