summaryrefslogtreecommitdiff
path: root/desktop
diff options
context:
space:
mode:
Diffstat (limited to 'desktop')
-rw-r--r--desktop/browser.c10
-rw-r--r--desktop/frames.c25
-rw-r--r--desktop/frames.h11
3 files changed, 29 insertions, 17 deletions
diff --git a/desktop/browser.c b/desktop/browser.c
index 2cc13e32a..9316b771d 100644
--- a/desktop/browser.c
+++ b/desktop/browser.c
@@ -1311,6 +1311,7 @@ static nserror browser_window_callback(hlcache_handle *c,
const hlcache_event *event, void *pw)
{
struct browser_window *bw = pw;
+ nserror res = NSERROR_OK;
switch (event->type) {
case CONTENT_MSG_DOWNLOAD:
@@ -1414,10 +1415,11 @@ static nserror browser_window_callback(hlcache_handle *c,
}
/* frames */
- if (content_get_type(c) == CONTENT_HTML &&
- html_get_frameset(c) != NULL)
- browser_window_create_frameset(bw,
+ if ((content_get_type(c) == CONTENT_HTML) &&
+ (html_get_frameset(c) != NULL)) {
+ res = browser_window_create_frameset(bw,
html_get_frameset(c));
+ }
if (content_get_type(c) == CONTENT_HTML &&
html_get_iframe(c) != NULL)
browser_window_create_iframes(bw, html_get_iframe(c));
@@ -1704,7 +1706,7 @@ static nserror browser_window_callback(hlcache_handle *c,
break;
}
- return NSERROR_OK;
+ return res;
}
diff --git a/desktop/frames.c b/desktop/frames.c
index 253e84225..394deb2ad 100644
--- a/desktop/frames.c
+++ b/desktop/frames.c
@@ -291,14 +291,8 @@ void browser_window_recalculate_iframes(struct browser_window *bw)
}
-/**
- * Create and open a frameset for a browser window.
- *
- * \param bw The browser window to create the frameset for
- * \param frameset The frameset to create
- */
-
-void browser_window_create_frameset(struct browser_window *bw,
+/* exported interface documented in desktop/frames.h */
+nserror browser_window_create_frameset(struct browser_window *bw,
struct content_html_frames *frameset)
{
int row, col, index;
@@ -313,8 +307,10 @@ void browser_window_create_frameset(struct browser_window *bw,
assert(frameset->cols + frameset->rows != 0);
bw->children = calloc((frameset->cols * frameset->rows), sizeof(*bw));
- if (!bw->children)
- return;
+ if (!bw->children) {
+ return NSERROR_NOMEM;
+ }
+
bw->cols = frameset->cols;
bw->rows = frameset->rows;
for (row = 0; row < bw->rows; row++) {
@@ -344,8 +340,11 @@ void browser_window_create_frameset(struct browser_window *bw,
window->margin_height = frame->margin_height;
if (frame->name) {
window->name = strdup(frame->name);
- if (!window->name)
- warn_user("NoMemory", 0);
+ if (!window->name) {
+ free(bw->children);
+ bw->children = NULL;
+ return NSERROR_NOMEM;
+ }
}
window->scale = bw->scale;
@@ -406,6 +405,8 @@ void browser_window_create_frameset(struct browser_window *bw,
}
}
}
+
+ return NSERROR_OK;
}
diff --git a/desktop/frames.h b/desktop/frames.h
index 02c513c22..b39c8a807 100644
--- a/desktop/frames.h
+++ b/desktop/frames.h
@@ -35,8 +35,17 @@ struct scrollbar_msg_data;
nserror browser_window_create_iframes(struct browser_window *bw,
struct content_html_iframe *iframe);
void browser_window_recalculate_iframes(struct browser_window *bw);
-void browser_window_create_frameset(struct browser_window *bw,
+
+/**
+ * Create and open a frameset for a browser window.
+ *
+ * \param[in,out] bw The browser window to create the frameset for
+ * \param[in] frameset The frameset to create
+ * \return NSERROR_OK or error code on faliure
+ */
+nserror browser_window_create_frameset(struct browser_window *bw,
struct content_html_frames *frameset);
+
void browser_window_recalculate_frameset(struct browser_window *bw);
bool browser_window_frame_resize_start(struct browser_window *bw,
browser_mouse_state mouse, int x, int y,