On 01/04/12 16:01, Ludovic Courtès wrote:
BTW, were you able to find a stripped-down example that reproduces the ‘string-upcase’ problem?
Here's the stripped down example, but it does not reproduce the problem. :( I didn't copy into it my variation on scm_c_eval_string, but I hope that isn't the issue. Must be some subtle interaction somewhere.... #include <stdio.h> #include <libguile.h> static SCM my_get(void) { static char const zNil[] = ""; SCM res = scm_from_locale_string(zNil); printf("zNil at %p yields SCM 0x%llX\n", zNil, (unsigned long long)res); return res; } static void inner_main(void * closure, int argc, char ** argv) { scm_c_define_gsubr("my-get", 0, 0, 0, (scm_t_subr)(void*)my_get); scm_c_eval_string("(define a (my-get))" "(define b (string-upcase a))" "(exit 0)"); } int main(int argc, char ** argv) { scm_boot_guile(argc, argv, inner_main, 0); return 0; /* NOTREACHED */ }