Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
language: add lang_code_preferred() to properly handle NULL for lang_…
…str_add
  • Loading branch information
perexg committed May 29, 2015
1 parent ec083c9 commit b06e241
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 1 deletion.
15 changes: 14 additions & 1 deletion src/lang_codes.c
Expand Up @@ -674,14 +674,27 @@ static void lang_code_free( lang_code_lookup_t *l )
{
lang_code_lookup_element_t *element;
if (l == NULL)
return;
while ((element = RB_FIRST(l)) != NULL) {
RB_REMOVE(l, element, link);
free(element);
}
free(l);
}

const char *lang_code_preferred( void )
{
const char *codes = config_get_language(), *ret = "und";
const lang_code_t *co;

if (codes) {
co = lang_code_get3(codes);
if (co && co->code2b)
ret = co->code2b;
}

return ret;
}

void lang_code_done( void )
{
lang_code_free(lang_codes_code2b);
Expand Down
2 changes: 2 additions & 0 deletions src/lang_codes.h
Expand Up @@ -36,6 +36,8 @@ const char *lang_code_get ( const char *code );
const char *lang_code_get2 ( const char *code, size_t len );
const lang_code_t *lang_code_get3 ( const char *code );

const char *lang_code_preferred( void );

/* Split list of codes as per HTTP Language-Accept spec */
const char **lang_code_split ( const char *codes );
const lang_code_t **lang_code_split2 ( const char *codes );
Expand Down
1 change: 1 addition & 0 deletions src/lang_str.c
Expand Up @@ -117,6 +117,7 @@ static int _lang_str_add
if (!str) return 0;

/* Get proper code */
if (!lang) lang = lang_code_preferred();
if (!(lang = lang_code_get(lang))) return 0;

/* Create skel */
Expand Down

0 comments on commit b06e241

Please sign in to comment.