From 4cabef0a9db40570e879d144052ad544f1a847df Mon Sep 17 00:00:00 2001 From: Stefano Sabatini Date: Mon, 1 Nov 2010 09:34:21 +0000 Subject: Make strmatch() return 1 only if the string compared against the prefix does not contain other characters which may belong to an identifier. This allows to distinguish for example to have different constants with the same prefix (e.g. "foo" and "foobar"). Originally committed as revision 25626 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavutil/eval.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'libavutil/eval.c') diff --git a/libavutil/eval.c b/libavutil/eval.c index 2799160094..a4ae2695d7 100644 --- a/libavutil/eval.c +++ b/libavutil/eval.c @@ -103,13 +103,16 @@ double av_strtod(const char *numstr, char **tail) return d; } +#define IS_IDENTIFIER_CHAR(c) ((c) - '0' <= 9U || (c) - 'a' <= 25U || (c) - 'A' <= 25U || (c) == '_') + static int strmatch(const char *s, const char *prefix) { int i; for (i=0; prefix[i]; i++) { if (prefix[i] != s[i]) return 0; } - return 1; + /* return 1 only if the s identifier is terminated */ + return !IS_IDENTIFIER_CHAR(s[i]); } struct AVExpr { -- cgit v1.2.3