From e4a31acb584271b32d9e7e0f65049a7169fa1ca9 Mon Sep 17 00:00:00 2001 From: "William A. Rowe Jr" Date: Tue, 1 Jan 2002 19:01:39 +0000 Subject: [PATCH] Thanks Mr. Trawick, backtraces can be very enlightening. This fixes two bugs, the segfault when researching index numbers, and another. We don't hint anywhere that LanguagePriority is a cumulative setting, in fact the syntax doesn't suggest so either. Merges are always slow, there is no reason to make this even slower. So the patch has the LanguagePriority directive override any existing LanguagePriority list from an earlier container. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92695 13f79535-47bb-0310-9956-ffa450edef68 --- modules/mappers/mod_negotiation.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/modules/mappers/mod_negotiation.c b/modules/mappers/mod_negotiation.c index 8b45ef93b5..9734d27691 100644 --- a/modules/mappers/mod_negotiation.c +++ b/modules/mappers/mod_negotiation.c @@ -119,8 +119,8 @@ static void *merge_neg_dir_configs(apr_pool_t *p, void *basev, void *addv) /* give priority to the config in the subdirectory */ new->forcelangpriority = add->forcelangpriority ? add->forcelangpriority : base->forcelangpriority; - new->language_priority = apr_array_append(p, add->language_priority, - base->language_priority); + new->language_priority = add->language_priority ? add->language_priority + : base->language_priority; return new; } @@ -1367,19 +1367,20 @@ static int level_cmp(var_rec *var1, var_rec *var2) static int find_lang_index(apr_array_header_t *accept_langs, char *lang) { - accept_rec *accs; + const char **alang; int i; if (!lang || !accept_langs) { return -1; } - accs = (accept_rec *) accept_langs->elts; + alang = (const char **) accept_langs->elts; for (i = 0; i < accept_langs->nelts; ++i) { - if (!strncmp(lang, accs[i].name, strlen(accs[i].name))) { + if (!strncmp(lang, *alang, strlen(*alang))) { return i; } + alang += (accept_langs->elt_size / sizeof(char*)); } return -1; -- 2.50.1