Please try the following patch.

Ben.

diff -Nru cdebconf-0.137/src/template.c cdebconf-0.137+nmu1/src/template.c
--- cdebconf-0.137/src/template.c       2008-09-14 15:28:22.000000000 +0100
+++ cdebconf-0.137+nmu1/src/template.c  2008-11-29 18:32:20.000000000 +0000
@@ -530,24 +530,20 @@
              strcmp(lang, "C") == 0 || strncmp(lang, "en", 2) == 0)
         curlang = lang;
     else {
-        const char *wantlang_full = getlanguage();
-        char *wantlang;
-        char *p;
-
-        if (!wantlang_full)
-            wantlang_full = "C";
-        wantlang = strdup(wantlang_full);
-        p = strpbrk(wantlang, "_.@");
-        if (p)
-            *p = '\0';
-        if (strncmp(lang, wantlang, strlen(wantlang)) == 0)
-            curlang = lang;
-        else {
-            INFO(INFO_VERBOSE, "Dropping %s/%s for %s (wantlang=%s)", t->tag, 
field, lang, wantlang);
-            free(wantlang);
-            return;
-        }
-        free(wantlang);
+       struct cache_list_lang *cl;
+
+       /* Could this language possibly be selected by template_lget()? */
+       getlanguage();
+       for (cl = cache_list_lang_ptr; cl != NULL; cl = cl->next)
+           if (strcmp(cl->lang, lang) == 0 ||
+               (strlen(cl->lang) == 2 && strncmp(cl->lang, lang, 2) == 0))
+               break;
+       if (cl == NULL) {
+           INFO(INFO_VERBOSE, "Dropping %s/%s for %s (cache_cur_lang=%s)", 
t->tag, field, lang, cache_cur_lang);
+           return;
+       }
+
+       curlang = lang;
     }
 
     p = t->fields;
--- END ---

-- 
Ben Hutchings
Any smoothly functioning technology is indistinguishable from a rigged demo.

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to