diff --git a/src/document/html/frames.c b/src/document/html/frames.c index 2a767d93..d3d7134c 100644 --- a/src/document/html/frames.c +++ b/src/document/html/frames.c @@ -41,7 +41,7 @@ add_frameset_entry(struct frameset_desc *frameset_desc, * There may exist a true fix for this... --Zas */ /* May the one truly fixing this notify'n'close bug 237 in the * Bugzilla... --pasky */ - if (frameset_desc->box.y >= frameset_desc-> box.height) + if (frameset_desc->box.y >= frameset_desc->box.height) return; offset = frameset_desc->box.x @@ -49,7 +49,7 @@ add_frameset_entry(struct frameset_desc *frameset_desc, frame_desc = &frameset_desc->frame_desc[offset]; frame_desc->subframe = subframe; frame_desc->name = null_or_stracpy(name); - frame_desc->uri = url && *url ? get_uri(url, 0) : NULL; + frame_desc->uri = (url && *url) ? get_uri(url, 0) : NULL; if (!frame_desc->uri) frame_desc->uri = get_uri("about:blank", 0); @@ -167,26 +167,29 @@ static struct document_view * format_frame(struct session *ses, struct frame_desc *frame_desc, struct document_options *o, int depth) { - struct cache_entry *cached; struct view_state *vs; struct document_view *doc_view; - struct frame *frame; int plain; assert(ses && frame_desc && o); if_assert_failed return NULL; -repeat: - frame = ses_find_frame(ses, frame_desc->name); - if (!frame) return NULL; + while (1) { + struct cache_entry *cached; + struct frame *frame = ses_find_frame(ses, frame_desc->name); - vs = &frame->vs; - cached = find_in_cache(vs->uri); - if (!cached) return NULL; - plain = o->plain; - if (vs->plain != -1) o->plain = vs->plain; + if (!frame) return NULL; + + vs = &frame->vs; + cached = find_in_cache(vs->uri); + if (!cached) return NULL; + + plain = o->plain; + if (vs->plain != -1) o->plain = vs->plain; + + if (!cached->redirect || frame->redirect_cnt >= MAX_REDIRECTS) + break; - if (cached->redirect && frame->redirect_cnt < MAX_REDIRECTS) { frame->redirect_cnt++; done_uri(vs->uri); vs->uri = get_uri_reference(cached->redirect); @@ -194,7 +197,6 @@ repeat: vs->ecmascript_fragile = 1; #endif o->plain = plain; - goto repeat; } doc_view = find_fd(ses, frame_desc->name, depth, o->box.x, o->box.y);