From: William A. Rowe Jr Date: Tue, 1 Jan 2002 19:01:39 +0000 (+0000) Subject: Thanks Mr. Trawick, backtraces can be very enlightening. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2160c665d845b8a3bf7fef70166f3461956ede71;p=apache 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 --- 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;