X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavutil%2Favstring.c;h=25c65b4238b3daf678a1bbc38c45c4e91ee640ce;hb=2896b981830ec5835732c044a2f6c606ee9fd5e6;hp=ac7f98ae74b044f0abbadb655f92a29ece1d981b;hpb=17d16008befa82cb79e71fbb4dc28fb4d9ec2ce6;p=ffmpeg diff --git a/libavutil/avstring.c b/libavutil/avstring.c index ac7f98ae74b..25c65b4238b 100644 --- a/libavutil/avstring.c +++ b/libavutil/avstring.c @@ -404,22 +404,21 @@ end: int av_match_list(const char *name, const char *list, char separator) { - const char *p; - char ext1[128], *q; - int i; - - p = list; - for (i = 1;; i++) { - q = ext1; - while (*p != '\0' && *p != separator && q - ext1 < sizeof(ext1) - 1) - *q++ = *p++; - *q = '\0'; - if (!av_strcasecmp(ext1, name)) - return i; - if (*p == '\0') - break; - p++; + const char *p, *q; + + for (p = name; p && *p; ) { + for (q = list; q && *q; ) { + int k; + for (k = 0; p[k] == q[k] || (p[k]*q[k] == 0 && p[k]+q[k] == separator); k++) + if (k && (!p[k] || p[k] == separator)) + return 1; + q = strchr(q, separator); + q += !!q; + } + p = strchr(p, separator); + p += !!p; } + return 0; }