diff options
author | Zher Huei Lee <lee.zh.92@gmail.com> | 2016-04-18 10:06:47 +0100 |
---|---|---|
committer | Zher Huei Lee <lee.zh.92@gmail.com> | 2016-04-18 10:06:47 +0100 |
commit | 48b2dfab9f91bec2fd9a0fc94630e2dae51fbf11 (patch) | |
tree | 39a1d46bd6c46c794c90959865cf8acb555405ad /drivers/nrex/nrex.cpp | |
parent | df13fdf0e93b1ef3ce4e12dfca0fcd38086eb0ed (diff) |
Fixed zero-length arrays in nrex. Fixes #4346
Diffstat (limited to 'drivers/nrex/nrex.cpp')
-rw-r--r-- | drivers/nrex/nrex.cpp | 14 |
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); } }; |