diff options
Diffstat (limited to 'riscos/theme.c')
-rw-r--r-- | riscos/theme.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/riscos/theme.c b/riscos/theme.c index 941318b03..f20705e69 100644 --- a/riscos/theme.c +++ b/riscos/theme.c @@ -37,7 +37,26 @@ void ro_theme_load(char *pathname) char name[] = "toolbar"; int context, window_size, data_size, size, i; static char *data = 0; + /** + * \note + * This is necessary as, when compiling with Norcroft 5.54, + * linking fails due to it trying to use + * __rt_allocauto and __rt_freeauto to allocate (and free) + * the stack space used by the filename buffer. + * These symbols are provided by the SCL but not by Unixlib + * + * \note + * There are three possible ways around this \#ifdef nastiness: + * - Allocate filename on the heap instead + * - Get NetSurf to build and link against the SCL + * - Implement __rt_allocauto and __rt_freeauto for Unixlib + * + */ +#ifdef __GNUC__ char filename[strlen(pathname) + 12]; +#else + char *filename = xcalloc(strlen(pathname) + 12, sizeof(char)); +#endif fileswitch_object_type obj_type; /* free old theme data */ @@ -98,6 +117,9 @@ void ro_theme_load(char *pathname) theme_throbs = n; } } +#ifndef __GNUC__ + xfree(filename); +#endif } |