source file of the GNU LilyPond music typesetter
- (c) 2002--2005 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ (c) 2002--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
*/
#include "lily-guile.hh"
#ifdef MODULE_GC_KLUDGE
Protected_scm anonymous_modules = SCM_EOL;
+bool perform_gc_kludge;
#endif
void
clear_anonymous_modules ()
{
+#ifdef MODULE_GC_KLUDGE
for (SCM s = anonymous_modules;
scm_is_pair (s);
s = scm_cdr (s))
}
anonymous_modules = SCM_EOL;
+#endif
}
SCM
}
#ifdef MODULE_GC_KLUDGE
- anonymous_modules = scm_cons (mod, anonymous_modules);
+ if (perform_gc_kludge)
+ anonymous_modules = scm_cons (mod, anonymous_modules);
#endif
return mod;
void
make_stand_in_procs_weak ()
{
- if (SCM_IS_WHVEC_ANY(scm_stand_in_procs))
- return;
+ /*
+ Ugh, ABI breakage for 1.6.5: scm_stand_in_procs is a hashtab from
+ 1.6.5 on.
+ */
+ if (scm_is_pair (scm_stand_in_procs))
+ {
+ return;
+ }
+
+ if (scm_weak_key_hash_table_p (scm_stand_in_procs) == SCM_BOOL_T)
+ {
+#if (SCM_MINOR_VERSION == 7)
+ perform_gc_kludge = false;
+#endif
+ return;
+ }
+
+
+ perform_gc_kludge = true;
+
SCM old_tab = scm_stand_in_procs;
SCM new_tab = scm_make_weak_key_hash_table (scm_from_int (257));