Make %substr robust to handle -1,-1 parameters
and restore old behavior when number of characters
in substring is greater then length of string itself.
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
len = nasm_unquote(t->text, NULL);
- /* check the values provided, on error -- empty string */
+ /* make start and count being in range */
+ if (start < 0)
+ start = 0;
if (count < 0)
count = len + count + 1 - start;
if (start + count > (int64_t)len)
- start = -1;
-
- if (!len || count < 0 || start < 0)
+ count = len - start;
+ if (!len || count < 0 || start >=(int64_t)len)
start = -1, count = 0; /* empty string */
macro_start = nasm_malloc(sizeof(*macro_start));