summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2004-05-02 01:04:38 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2004-05-02 01:04:38 +0000
commit51bea40b9a1bb15ba148ab3e939f9935d0c65e04 (patch)
tree12f94f1a73a91aa7184625ec3ba5d9ca3685a67e
parent8cb321ec78908552cfc1329da3d6efaeac1e8423 (diff)
downloadnetsurf-51bea40b9a1bb15ba148ab3e939f9935d0c65e04.tar.gz
netsurf-51bea40b9a1bb15ba148ab3e939f9935d0c65e04.tar.bz2
[project @ 2004-05-02 01:04:38 by jmb]
A couple more Norcroft-related patches. The use of #ifdef __GNU_C__ in both of these can be avoided. I'm not entirely sure whether it would be sensible to do so, so I've left them as-is. svn path=/import/netsurf/; revision=814
-rw-r--r--render/layout.c12
-rw-r--r--riscos/theme.c22
2 files changed, 34 insertions, 0 deletions
diff --git a/render/layout.c b/render/layout.c
index 47c09ed20..92aadbf7e 100644
--- a/render/layout.c
+++ b/render/layout.c
@@ -1002,7 +1002,16 @@ void layout_table(struct box *table, int available_width)
struct box *row;
struct box *row_group;
struct box **row_span_cell;
+ /**
+ * \attention
+ * See the note at the top of ro_theme_load()
+ * in riscos/theme.c for an explaination of this \#ifdef silliness
+ */
+#ifdef __GNUC__
struct column col[columns];
+#else
+ struct column *col = xcalloc(columns, sizeof(*col));
+#endif
struct css_style *style = table->style;
assert(table->type == BOX_TABLE);
@@ -1209,6 +1218,9 @@ void layout_table(struct box *table, int available_width)
xfree(excess_y);
xfree(row_span);
xfree(xs);
+#ifndef __GNUC__
+ xfree(col);
+#endif
table->width = table_width;
table->height = table_height;
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
}