]> granicus.if.org Git - apache/commitdiff
Thanks Mr. Trawick, backtraces can be very enlightening.
authorWilliam A. Rowe Jr <wrowe@apache.org>
Tue, 1 Jan 2002 19:01:39 +0000 (19:01 +0000)
committerWilliam A. Rowe Jr <wrowe@apache.org>
Tue, 1 Jan 2002 19:01:39 +0000 (19:01 +0000)
  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

index 8b45ef93b53aacf3964496389b1451b159193d26..9734d2769155eb615035f415fcb90c6ac3191e12 100644 (file)
@@ -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;