summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJay Smith <jay@php.net>2003-05-30 19:06:34 +0000
committerJay Smith <jay@php.net>2003-05-30 19:06:34 +0000
commita79c751ae2e8efbb2e4e55e412c3027e4b373b19 (patch)
treebef0f169a0afb87c6b731a010cb02bc101e32249
parent6f524ac9f1c3309819014be9228aac4666af6d5e (diff)
downloadphp-git-a79c751ae2e8efbb2e4e55e412c3027e4b373b19.tar.gz
Relying on longer matches seems to work better than
matching the whole string with ^...$.
-rw-r--r--ext/standard/browscap.c13
1 files changed, 3 insertions, 10 deletions
diff --git a/ext/standard/browscap.c b/ext/standard/browscap.c
index dced39fd34..508404d42a 100644
--- a/ext/standard/browscap.c
+++ b/ext/standard/browscap.c
@@ -47,10 +47,9 @@ static void convert_browscap_pattern(zval *pattern)
register int i, j;
char *t;
- t = (char *) malloc(Z_STRLEN_P(pattern)*2 + 3);
- t[0] = '^';
+ t = (char *) malloc(Z_STRLEN_P(pattern)*2 + 1);
- for (i=0, j=1; i<Z_STRLEN_P(pattern); i++, j++) {
+ for (i=0, j=0; i<Z_STRLEN_P(pattern); i++, j++) {
switch (Z_STRVAL_P(pattern)[i]) {
case '?':
t[j] = '.';
@@ -73,7 +72,6 @@ static void convert_browscap_pattern(zval *pattern)
t[j++] = '*';
}
- t[j++]='$';
t[j]=0;
Z_STRVAL_P(pattern) = t;
Z_STRLEN_P(pattern) = j;
@@ -196,14 +194,9 @@ static int browser_reg_compare(zval **browser, int num_args, va_list args, zend_
}
if (*found_browser_entry) {
- /* We've already found it, so don't compare to the default browser,
- because it will match anything. */
- if (!strcmp(Z_STRVAL_PP(browser_name), "^.*$")) {
- return 0;
- }
/* If we've found a possible browser, check it's length. Longer user
agent strings are assumed to be more precise, so use them. */
- else if (zend_hash_find(Z_ARRVAL_PP(found_browser_entry), "browser_name_regex", sizeof("browser_name_regex"), (void**) &current) == FAILURE) {
+ if (zend_hash_find(Z_ARRVAL_PP(found_browser_entry), "browser_name_regex", sizeof("browser_name_regex"), (void**) &current) == FAILURE) {
return 0;
}
else if (Z_STRLEN_PP(current) > Z_STRLEN_PP(browser_name)) {