summaryrefslogtreecommitdiff
path: root/drivers/nrex/nrex.cpp
diff options
context:
space:
mode:
authorZher Huei Lee <lee.zh.92@gmail.com>2016-04-18 10:06:47 +0100
committerZher Huei Lee <lee.zh.92@gmail.com>2016-04-18 10:06:47 +0100
commit48b2dfab9f91bec2fd9a0fc94630e2dae51fbf11 (patch)
tree39a1d46bd6c46c794c90959865cf8acb555405ad /drivers/nrex/nrex.cpp
parentdf13fdf0e93b1ef3ce4e12dfca0fcd38086eb0ed (diff)
Fixed zero-length arrays in nrex. Fixes #4346
Diffstat (limited to 'drivers/nrex/nrex.cpp')
-rw-r--r--drivers/nrex/nrex.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/drivers/nrex/nrex.cpp b/drivers/nrex/nrex.cpp
index ac19c71408..69e04285e3 100644
--- a/drivers/nrex/nrex.cpp
+++ b/drivers/nrex/nrex.cpp
@@ -68,9 +68,9 @@ class nrex_array
{
}
- nrex_array(unsigned int size)
- : _data(NREX_NEW_ARRAY(T, size))
- , _reserved(size)
+ nrex_array(unsigned int reserved)
+ : _data(NREX_NEW_ARRAY(T, reserved ? reserved : 1))
+ , _reserved(reserved ? reserved : 1)
, _size(0)
{
}
@@ -87,6 +87,12 @@ class nrex_array
void reserve(unsigned int size)
{
+ if (size < _size) {
+ size = _size;
+ }
+ if (size == 0) {
+ size = 1;
+ }
T* old = _data;
_data = NREX_NEW_ARRAY(T, size);
_reserved = size;
@@ -207,8 +213,8 @@ struct nrex_search
: str(str)
, captures(captures)
, end(0)
+ , lookahead_pos(lookahead)
{
- lookahead_pos.reserve(lookahead);
}
};