From 0bad0c321d51352bfb68c3759c7fd78489e7e254 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Sat, 27 Feb 2010 18:32:49 +0900 Subject: * lib.c (search_str): Bugfix for empty haystack case: checks for end of string must use postincrement on the index, otherwise the access goes past the null terminator. --- ChangeLog | 6 ++++++ lib.c | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index a1825d53..9cfcb0bb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2010-02-27 Kaz Kylheku + + * lib.c (search_str): Bugfix for empty haystack case: checks for end + of string must use postincrement on the index, otherwise the access + goes past the null terminator. + 2010-02-27 Kaz Kylheku * match.c (match_lines): Bugfix in freeform directive. diff --git a/lib.c b/lib.c index 6ce2a1f4..1d073a29 100644 --- a/lib.c +++ b/lib.c @@ -882,7 +882,7 @@ val search_str(val haystack, val needle, val start_num, val from_end) pos = f - h; else pos = -1; - } while (pos != -1 && (good = pos) != -1 && from_end && h[++start]); + } while (pos != -1 && (good = pos) != -1 && from_end && h[start++]); } else { size_t ln = c_num(length_str(needle)); @@ -892,7 +892,7 @@ val search_str(val haystack, val needle, val start_num, val from_end) if (!wcsncmp(h + start, n, ln)) good = start; - } while (h[++start] && (from_end || good == -1)); + } while (h[start++] && (from_end || good == -1)); } return (good == -1) ? nil : num(good); } -- cgit v1.2.3