when walking the css imports ensure the content is present before dereferencing it

css import entries may not have a valid content if the resource failed to load
or was unsuitable in some otehr way. The save_complete iterator did not cope with this.

fixes #2166
This commit is contained in:
Vincent Sanders 2014-07-08 13:25:54 +01:00
parent 5ce4f11eac
commit 89a02c3a8f
2 changed files with 7 additions and 4 deletions

View File

@ -575,14 +575,14 @@ css_error nscss_handle_import(void *pw, css_stylesheet *parent,
/* Create content */
c->imports[c->import_count].media = media;
/* TODO: Why aren't we getting a relative url part, to join? */
/** \todo Why aren't we getting a relative url part, to join? */
nerror = nsurl_create(lwc_string_data(url), &ns_url);
if (nerror != NSERROR_OK) {
free(ctx);
return CSS_NOMEM;
}
/* TODO: Constructing nsurl for referer here is silly, avoid */
/** \todo Constructing nsurl for referer here is silly, avoid */
nerror = nsurl_create(referer, &ns_ref);
if (nerror != NSERROR_OK) {
nsurl_unref(ns_url);

View File

@ -355,8 +355,11 @@ static bool save_complete_save_imported_sheets(save_complete_ctx *ctx,
uint32_t i;
for (i = 0; i < import_count; i++) {
if (save_complete_save_stylesheet(ctx, imports[i].c) == false)
return false;
/* treat a valid content as a stylesheet to save */
if ((imports[i].c != NULL) &&
(save_complete_save_stylesheet(ctx, imports[i].c) == false)) {
return false;
}
}
return true;