summaryrefslogtreecommitdiff
path: root/recipes/xorg-lib/libxfont
diff options
context:
space:
mode:
authorDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
committerDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
commit709c4d66e0b107ca606941b988bad717c0b45d9b (patch)
tree37ee08b1eb308f3b2b6426d5793545c38396b838 /recipes/xorg-lib/libxfont
parentfa6cd5a3b993f16c27de4ff82b42684516d433ba (diff)
rename packages/ to recipes/ per earlier agreement
See links below for more details: http://thread.gmane.org/gmane.comp.handhelds.openembedded/21326 http://thread.gmane.org/gmane.comp.handhelds.openembedded/21816 Signed-off-by: Denys Dmytriyenko <denis@denix.org> Acked-by: Mike Westerhof <mwester@dls.net> Acked-by: Philip Balister <philip@balister.org> Acked-by: Khem Raj <raj.khem@gmail.com> Acked-by: Marcin Juszkiewicz <hrw@openembedded.org> Acked-by: Koen Kooi <koen@openembedded.org> Acked-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
Diffstat (limited to 'recipes/xorg-lib/libxfont')
-rw-r--r--recipes/xorg-lib/libxfont/builtinreaddirectory-no-side-effect.patch188
-rw-r--r--recipes/xorg-lib/libxfont/no-scalable-crash.patch22
2 files changed, 210 insertions, 0 deletions
diff --git a/recipes/xorg-lib/libxfont/builtinreaddirectory-no-side-effect.patch b/recipes/xorg-lib/libxfont/builtinreaddirectory-no-side-effect.patch
new file mode 100644
index 0000000000..dd307434b9
--- /dev/null
+++ b/recipes/xorg-lib/libxfont/builtinreaddirectory-no-side-effect.patch
@@ -0,0 +1,188 @@
+commit 7670d4a2720c61fbc7b989fed14c676f04ac3ad1
+Author: Dodji Seketeli <dodji@openedhand.com>
+Date: Mon Jul 16 12:24:34 2007 +0200
+
+ Remove side effects from BuiltinReadDirectory()
+
+ The first time BuiltinReadDirectory() is called,
+ save the content of builtin_dir and builtin_alias,
+ before calling FontFileAddFontFile(), because that fonction
+ will modify those.
+
+ Then, in subsequent calls to BuiltinReadDirectory(), restore
+ builtin_dir and builtin_alias so that the side effect incurred
+ by the first call disappears.
+
+diff --git a/src/builtins/dir.c b/src/builtins/dir.c
+index c272449..97f1e1e 100644
+--- a/src/builtins/dir.c
++++ b/src/builtins/dir.c
+@@ -29,6 +29,133 @@
+ #endif
+ #include "builtin.h"
+
++BuiltinDirPtr
++BuiltinDirsDup (const BuiltinDirPtr a_dirs,
++ int a_dirs_len)
++{
++ BuiltinDirPtr dirs=NULL ;
++ int i=0 ;
++
++ if (!a_dirs)
++ return NULL ;
++
++ dirs = xcalloc (a_dirs_len, sizeof (BuiltinDirRec)) ;
++ if (!dirs)
++ return NULL ;
++
++ for (i=0; i < a_dirs_len; i++) {
++ int len = strlen (a_dirs[i].file_name) ;
++ dirs[i].file_name = xcalloc (1, len) ;
++ memmove (dirs[i].file_name, a_dirs[i].file_name, len);
++ len = strlen (a_dirs[i].font_name) ;
++ dirs[i].font_name = xcalloc (1, len) ;
++ memmove (dirs[i].font_name, a_dirs[i].font_name, len);
++ }
++ return dirs ;
++}
++
++/**
++ * Copy a_save back into a_cur
++ * @param a_cur the instance of BuiltinDir to restore
++ * @param a_saved the saved instance of BuiltinDir to copy into a_cur
++ * @return 0 if went okay, 1 otherwise.
++ */
++int
++BuiltinDirRestore (BuiltinDirPtr a_cur,
++ const BuiltinDirPtr a_saved)
++{
++ if (!a_cur)
++ return 1 ;
++ if (!a_saved)
++ return 0 ;
++
++ if (a_saved->font_name)
++ memmove (a_cur->font_name, a_saved->font_name, strlen (a_saved->font_name)) ;
++ return 0 ;
++}
++
++
++int
++BuiltinDirsRestore (BuiltinDirPtr a_cur_tab,
++ const BuiltinDirPtr a_saved_tab,
++ int a_tab_len)
++{
++ int i=0 ;
++
++ if (!a_cur_tab)
++ return 1 ;
++ if (!a_saved_tab)
++ return 0 ;
++
++ for (i=0 ; i < a_tab_len; i++) {
++ if (BuiltinDirRestore (&a_cur_tab[i], &a_saved_tab[i]))
++ return 1 ;
++ }
++ return 0 ;
++}
++
++BuiltinAliasPtr
++BuiltinAliasesDup (const BuiltinAliasPtr a_aliases,
++ int a_aliases_len)
++{
++ BuiltinAliasPtr aliases=NULL ;
++ int i=0 ;
++
++ if (!a_aliases)
++ return NULL ;
++
++ aliases = xcalloc (a_aliases_len, sizeof (BuiltinAliasRec)) ;
++ if (!aliases)
++ return NULL ;
++
++ for (i=0; i < a_aliases_len; i++) {
++ int len = strlen (a_aliases[i].font_name) ;
++ aliases[i].font_name = xcalloc (1, len) ;
++ memmove (aliases[i].font_name, a_aliases[i].font_name, len);
++ }
++ return aliases ;
++}
++
++/**
++ * Copy a_save back into a_cur
++ * @param a_cur the instance of BuiltinAlias to restore
++ * @param a_saved the saved instance of BuiltinAlias to copy into a_cur
++ * @return 0 if went okay, 1 otherwise.
++ */
++int
++BuiltinAliasRestore (BuiltinAliasPtr a_cur,
++ const BuiltinAliasPtr a_save)
++{
++ if (!a_cur)
++ return 1 ;
++ if (!a_save)
++ return 0 ;
++ if (a_save->alias_name)
++ memmove (a_cur->alias_name, a_save->alias_name, strlen (a_save->alias_name)) ;
++ if (a_save->font_name)
++ memmove (a_cur->font_name, a_save->font_name, strlen (a_save->font_name)) ;
++ return 0 ;
++}
++
++int
++BuiltinAliasesRestore (BuiltinAliasPtr a_cur_tab,
++ const BuiltinAliasPtr a_saved_tab,
++ int a_tab_len)
++{
++ int i=0 ;
++
++ if (!a_cur_tab)
++ return 1 ;
++ if (!a_saved_tab)
++ return 0 ;
++
++ for (i=0 ; i < a_tab_len; i++) {
++ if (BuiltinAliasRestore (&a_cur_tab[i], &a_saved_tab[i]))
++ return 1 ;
++ }
++ return 0 ;
++}
++
+ int
+ BuiltinReadDirectory (char *directory, FontDirectoryPtr *pdir)
+ {
+@@ -36,6 +163,34 @@ BuiltinReadDirectory (char *directory, FontDirectoryPtr *pdir)
+ int i;
+
+ dir = FontFileMakeDir ("", builtin_dir_count);
++ static BuiltinDirPtr saved_builtin_dir ;
++ static BuiltinAliasPtr saved_builtin_alias ;
++
++
++ if (saved_builtin_dir)
++ {
++ BuiltinDirsRestore ((BuiltinDirPtr) builtin_dir,
++ saved_builtin_dir,
++ builtin_dir_count) ;
++ }
++ else
++ {
++ saved_builtin_dir = BuiltinDirsDup ((const BuiltinDirPtr) builtin_dir,
++ builtin_dir_count) ;
++ }
++
++ if (saved_builtin_alias)
++ {
++ BuiltinAliasesRestore ((BuiltinAliasPtr) builtin_alias,
++ saved_builtin_alias,
++ builtin_alias_count) ;
++ }
++ else
++ {
++ saved_builtin_alias = BuiltinAliasesDup ((const BuiltinAliasPtr) builtin_alias,
++ builtin_alias_count) ;
++ }
++
+ for (i = 0; i < builtin_dir_count; i++)
+ {
+ if (!FontFileAddFontFile (dir,
diff --git a/recipes/xorg-lib/libxfont/no-scalable-crash.patch b/recipes/xorg-lib/libxfont/no-scalable-crash.patch
new file mode 100644
index 0000000000..90bded6fba
--- /dev/null
+++ b/recipes/xorg-lib/libxfont/no-scalable-crash.patch
@@ -0,0 +1,22 @@
+--- /tmp/fontdir.c 2006-08-01 16:17:22.000000000 +0200
++++ libXfont-1.2.0/src/fontfile/fontdir.c 2006-08-01 16:20:37.248306000 +0200
+@@ -695,6 +695,11 @@
+ */
+ if (isscale)
+ {
++ /* If the fontname says it is scalable, make sure that the
++ * renderer supports OpenScalable and GetInfoScalable.
++ */
++ if (renderer->OpenScalable && renderer->GetInfoScalable)
++ {
+ if (vals.values_supplied & SIZE_SPECIFY_MASK)
+ {
+ bzero((char *)&zeroVals, sizeof(zeroVals));
+@@ -794,6 +799,7 @@
+ bitmap->name.name);
+ }
+ }
++ }
+ }
+ return TRUE;
+ }