From 07fc330241bb762a0c9cdca254ea2fa7cc49261b Mon Sep 17 00:00:00 2001 From: Zher Huei Lee Date: Mon, 18 Apr 2016 10:06:47 +0100 Subject: [PATCH] Fixed zero-length arrays in nrex. Fixes #4346 (cherry picked from commit 48b2dfab9f91bec2fd9a0fc94630e2dae51fbf11) --- drivers/nrex/nrex.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/drivers/nrex/nrex.cpp b/drivers/nrex/nrex.cpp index ac19c714081..69e04285e30 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); } };