summaryrefslogtreecommitdiff
path: root/src/fclang.c
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@behdad.org>2009-11-16 18:29:26 -0500
committerBehdad Esfahbod <behdad@behdad.org>2009-11-16 18:29:26 -0500
commita3b2426819836ab2454c6a7bad27c382f4a245bf (patch)
tree63c8a3a9e6f20a4b7ef8b54f228ba1545c10fa6c /src/fclang.c
parent8480c6f86327877fce729ebb01b52bd7a40ddfc5 (diff)
[lang] Fix serializing LangSet from older versions
Diffstat (limited to 'src/fclang.c')
-rw-r--r--src/fclang.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/fclang.c b/src/fclang.c
index 61c4da6..1d62c4e 100644
--- a/src/fclang.c
+++ b/src/fclang.c
@@ -537,9 +537,10 @@ FcChar32
FcLangSetHash (const FcLangSet *ls)
{
FcChar32 h = 0;
- int i;
+ int i, count;
- for (i = 0; i < ls->map_size; i++)
+ count = FC_MIN (ls->map_size, NUM_LANG_SET_MAP);
+ for (i = 0; i < count; i++)
h ^= ls->map[i];
if (ls->extra)
h ^= ls->extra->num;
@@ -777,7 +778,9 @@ FcLangSetSerialize(FcSerialize *serialize, const FcLangSet *l)
if (!l_serialize)
return NULL;
- *l_serialize = *l;
+ memset (l_serialize->map, '\0', sizeof (l_serialize->map));
+ memcpy (l_serialize->map, l->map, FC_MIN (sizeof (l_serialize->map), l->map_size * sizeof (l->map[0])));
+ l_serialize->map_size = NUM_LANG_SET_MAP;
l_serialize->extra = NULL; /* We don't serialize ls->extra */
return l_serialize;
}